elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Numeros primos  (Leído 3,365 veces)
Ander123

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Numeros primos
« en: 30 Agosto 2012, 13:27 pm »

Hola tengo que descompones un numero y que muestre sus numeros primos, he provado en dividir entre un array de 10, pero supongo que no se hara asi, como hago para que lo divida entre las 9 posibilidades?

Código:
#include<stdio.h>

main()
{
    int n,d;
    d=((>=2)&&)<=9))
    printf("Introduzca un numero");
    scanf("%d",&n);
    while (n!=0)
    {
        if (n>0)
        {
             n%d==0;
             n/==d;
             printf("%d\n",n);
        }


    }
}


« Última modificación: 30 Agosto 2012, 13:46 pm por Ander123 » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Numeros primos
« Respuesta #1 en: 30 Agosto 2012, 14:48 pm »

Hola Ander123 mira a ver si te he entendido , el array de diez que tu dices ¿es esto?:
Código
  1. d=((>=2)&&)<=9))
Así no se declara un array , es más es que no se que has hecho sinceramente :xD
Vamos a ver si quieres dividir un número por factores primos lo primero que debes tener es una lista de primos 2, 3 ,5 ,7,11 etc... pero eso tiene limitación pues la lista no puede ser infinita.Esa lista la podemos limitar a 10 números primos si te parece, así que declaramos un array de numeros enteros que se hace así:
Código
  1. int listaNumerosPrimos [9] = {2,3,5,7,11,13,17,19,23,29};//Pongo nueve pues la posición 0 también existe.
Ahora el código:
Código
  1. int numeroADescomponer;
  2. printf("Introduzca un numero");
  3. scanf("%d",&numeroADescomponer);
  4. int i = 0;
  5. while(i<=9) // Mientras i sea menor o igual que nueve recorremos el array y dividimos.
  6. {
  7.  if(numeroADescomponer%listaNumerosPrimos[i] == 0) //Si el numero a descomponer entre la lista de numeros primos en la  posición i , da de resto 0 es que es divisible , entonces imprimimos el numero de la lista y dividimos el numero a descomponer por el numero de la lista.No incrementamos i porque puede volver a ser divisible.
  8. {
  9.   printf("%d",listaNumerosPrimos[i]);
  10.   numeroADescomponer/=listaNumerosPrimos[i];//Dividimos y asignamos numero a descomponer entre la lista de numeros primos.
  11. }
  12. else//Si no es divisible pues incrementamos i.
  13. {
  14.   ++i;
  15. }
  16. }
Creo que es entendible, por cierto , revisate los operadores de asignacion y comparación porque tienes un lío gordo:
Código
  1. n/==d;
Para dividir y asignar es /=
Otra cosa:
Código
  1. n%d==0;
Esto no tengo ni idea de que es , sinceramente.Las comparaciones las tienes que hacer con If's ,While's pero en medio del código no.
Otra cosa más utiliza nombres de variables que describan bien la funcion de cada una.Y una pregunta ¿Vienes de algun otro lenguaje de programación?


« Última modificación: 30 Agosto 2012, 15:58 pm por avesudra » En línea

Regístrate en
Ander123

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Re: Numeros primos
« Respuesta #2 en: 30 Agosto 2012, 16:11 pm »

El programa no funciona bien.. algo le debe pasar, algo pasara con el array..
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Numeros primos
« Respuesta #3 en: 30 Agosto 2012, 16:24 pm »

El programa no funciona bien.. algo le debe pasar, algo pasara con el array..
No lo he probado la verdad , ahora lo pruebo y miro que es lo que está mal , pero aun así esos errores tenlos en cuenta  :)
En línea

Regístrate en
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Numeros primos
« Respuesta #4 en: 30 Agosto 2012, 16:36 pm »

Estaba mal pues se ejecutaba el bucle mientras que i fuese menor o igual que nueve y era mientras que numeroADescomponer fuese mayor que uno, ahí te dejo el código.
Código
  1. #include<stdio.h>
  2.  
  3. int main (int argc , char *argv[])
  4. {
  5.    int numeroADescomponer;
  6.    int listaNumerosPrimos [10] = {2,3,5,7,11,13,17,19,23,29};
  7.    printf("Introduzca un numero: ");
  8.    scanf("%d",&numeroADescomponer);
  9.    int i = 0;
  10.    while(numeroADescomponer>1) // Mientras numero a descomponer sea mayor que uno recorremos el array y dividimos.
  11.    {
  12.        if(numeroADescomponer%listaNumerosPrimos[i] == 0) //Si el numero a descomponer entre la lista de numeros primos en la  posición i , da de resto 0 es que es divisible , entonces imprimimos el numero de la lista y dividimos el numero a descomponer por el numero de la lista.No incrementamos i porque puede volver a ser divisible.
  13.        {
  14.            printf("%d * ",listaNumerosPrimos[i]);
  15.            numeroADescomponer/=listaNumerosPrimos[i];//Dividimos y asignamos numero a descomponer entre la lista de numeros primos.
  16.        }
  17.        else//Si no es divisible pues incrementamos i.
  18.        {
  19.            ++i;
  20.        }
  21.    }
  22.    printf("\b\b ");//Retrocedemos dos carácteres y imprimimos un espacio para borrar el * que queda.
  23.    return 0;
  24. }
  25.  
« Última modificación: 30 Agosto 2012, 16:44 pm por avesudra » En línea

Regístrate en
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Numeros primos
« Respuesta #5 en: 30 Agosto 2012, 19:01 pm »

Citar
Hola tengo que descompones un numero y que muestre sus numeros primos

hola, normalmente cuando se factoriza un numero ya se hace en numeros primos... asi que tu problema seria directamente factorizar cualquier numero? aqui te dejo otra manera de hacerlo que no usa una lista de numeros primos y asi el programa no esta limitado.

Código
  1. #include <stdio.h>
  2.  
  3. int EsPrimo(unsigned int n);
  4.  
  5. int main() {
  6.  
  7. unsigned int num, i;
  8.  
  9. printf("Ingresa el numero a descomponer: ");
  10. scanf("%u", &num);
  11.  
  12. if (EsPrimo(num) > 0) {
  13. printf("El numero introducido es primo y no se puede factorizar.\n");
  14. return 0;
  15. }
  16.  
  17. printf("Numero factorizado: ");
  18. for (i=2; i<=num && num!=1; i++) {
  19. if (num%i==0) {
  20. printf("%u ", i);
  21. num/=i;
  22. i=1;
  23. }
  24. }
  25. printf("\n");
  26.  
  27. return 0;
  28. }
  29.  
  30. int EsPrimo(unsigned int n) {
  31.  
  32. unsigned int i;
  33.  
  34. for (i=2; i<n; i++)
  35. if (n%i==0) return -1;
  36.  
  37. return 1;
  38. }
  39.  

espero que te sirva... un saludo!
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Numeros primos
« Respuesta #6 en: 30 Agosto 2012, 21:15 pm »

A lo breve y sin función, ya que creo no te has visto todavía ese tema:
Código:
#include <stdio.h>
int main()
{
    int N,i,j;
    printf ("Introduzca un numero:");
    scanf ("%d",&N);
    for (i=1;i<=N;i++)
        {
            if(N%i!=0) continue;
            printf("%d   ", i);
            N=N/i;
            i=1;
        }
    return 0;
}
Como ya te indicaron en el anterior post, se trata de factorizar y los factores son los divisores primos. Si sólo te sale 1 y el propio número es que el número es primo.
Saludos ..... y a ver en que foro te quedas .....
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Python
katas 2 9,898 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
NUMEROS PRIMOS
Programación C/C++
alviera 4 6,082 Último mensaje 7 Diciembre 2010, 06:39 am
por N0body
NUMEROS PRIMOS
Programación C/C++
ALONSOQ 5 3,630 Último mensaje 16 Junio 2012, 18:13 pm
por ALONSOQ
Numeros primos
Programación C/C++
Antonio05550 2 1,740 Último mensaje 2 Octubre 2013, 20:20 pm
por Miky Gonzalez
Numeros primos. « 1 2 »
Dudas Generales
FKT 10 5,826 Último mensaje 27 Junio 2024, 15:49 pm
por albmanvic
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines