Autor
|
Tema: Numeros primos (Leído 3,320 veces)
|
Ander123
Desconectado
Mensajes: 101
|
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? #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
Mensajes: 724
Intentando ser mejor cada día :)
|
Hola Ander123 mira a ver si te he entendido , el array de diez que tu dices ¿es esto?: d=((>=2)&&)<=9))
Así no se declara un array , es más es que no se que has hecho sinceramente 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í: 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: int numeroADescomponer; printf("Introduzca un numero"); scanf("%d",&numeroADescomponer ); int i = 0; while(i<=9) // Mientras i sea menor o igual que nueve recorremos el array y dividimos. { 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. { printf("%d",listaNumerosPrimos [i ]); numeroADescomponer/=listaNumerosPrimos[i];//Dividimos y asignamos numero a descomponer entre la lista de numeros primos. } else//Si no es divisible pues incrementamos i. { ++i; } }
Creo que es entendible, por cierto , revisate los operadores de asignacion y comparación porque tienes un lío gordo: n/==d;
Para dividir y asignar es /= Otra cosa: 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
Mensajes: 101
|
El programa no funciona bien.. algo le debe pasar, algo pasara con el array..
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
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
Mensajes: 724
Intentando ser mejor cada día :)
|
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. #include<stdio.h> int main (int argc , char *argv[]) { int numeroADescomponer; int listaNumerosPrimos [10] = {2,3,5,7,11,13,17,19,23,29}; printf("Introduzca un numero: "); scanf("%d",&numeroADescomponer ); int i = 0; while(numeroADescomponer>1) // Mientras numero a descomponer sea mayor que uno recorremos el array y dividimos. { 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. { printf("%d * ",listaNumerosPrimos [i ]); numeroADescomponer/=listaNumerosPrimos[i];//Dividimos y asignamos numero a descomponer entre la lista de numeros primos. } else//Si no es divisible pues incrementamos i. { ++i; } } printf("\b\b ");//Retrocedemos dos carácteres y imprimimos un espacio para borrar el * que queda. return 0; }
|
|
« Última modificación: 30 Agosto 2012, 16:44 pm por avesudra »
|
En línea
|
Regístrate en
|
|
|
xiruko
Desconectado
Mensajes: 438
|
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. #include <stdio.h> int EsPrimo(unsigned int n); int main() { unsigned int num, i; printf("Ingresa el numero a descomponer: "); if (EsPrimo(num) > 0) { printf("El numero introducido es primo y no se puede factorizar.\n"); return 0; } printf("Numero factorizado: "); for (i=2; i<=num && num!=1; i++) { if (num%i==0) { num/=i; i=1; } } return 0; } int EsPrimo(unsigned int n) { unsigned int i; for (i=2; i<n; i++) if (n%i==0) return -1; return 1; }
espero que te sirva... un saludo!
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
A lo breve y sin función, ya que creo no te has visto todavía ese tema: #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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Scripting
|
katas
|
2
|
9,847
|
10 Marzo 2010, 01:50 am
por Novlucker
|
|
|
NUMEROS PRIMOS
Programación C/C++
|
alviera
|
4
|
6,032
|
7 Diciembre 2010, 06:39 am
por N0body
|
|
|
NUMEROS PRIMOS
Programación C/C++
|
ALONSOQ
|
5
|
3,584
|
16 Junio 2012, 18:13 pm
por ALONSOQ
|
|
|
Numeros primos
Programación C/C++
|
Antonio05550
|
2
|
1,704
|
2 Octubre 2013, 20:20 pm
por Miky Gonzalez
|
|
|
Numeros primos.
« 1 2 »
Dudas Generales
|
FKT
|
10
|
5,647
|
27 Junio 2024, 15:49 pm
por albmanvic
|
|