Título: Programa que factorize números enteros Publicado por: Einstein92 en 25 Enero 2014, 13:21 pm Buenas a todos, tengo un problema al ejecutar el código de un programa, resulta que se queda colgado y dice "Factorizar.exe" dejó de funcionar, y no tengo ni idea de por qué, ya que no veo nada en el código mal :huh: . El enunciado del ejercicio es el siguiente:
- Descomponer un número entero en sus factores primos. Y mi solución esta: #include<stdio.h> #include<stdlib.h> int Factor(int a){ int b=2; while (a%b!=0) b++; return (b); } int main(void){ int x,y,cociente; printf("Introduzca un numero entero: "); scanf("%d",x); y=Factor(x); while(y>1){ printf("%d\n",y); cociente=x/(Factor(x)); y=Factor(cociente); } system("pause"); return 0; } Puesto que todavía no sabemos hacer que una función devuelva más de un valor, he creado una función que me devuelve el primer factor primo, y con un bucle la voy llamando varias veces, cambiando el valor del parámetro de entrada por el siguiente cociente, hasta que el factor que me devuelva sea igual o menor a 1. ¿Qué problema hay? Seguramente esté en el código... :| Un saludo y gracias por adelantado. Título: Re: Programa que factorize números enteros Publicado por: vangodp en 25 Enero 2014, 13:54 pm scanf("%d",&x); le falta el & delante de la x.
Aún que hay mas errocillos, pero esos lo arreglas tu, ya no se cuerga XD Título: Re: Programa que factorize números enteros Publicado por: Einstein92 en 25 Enero 2014, 17:51 pm Muchas gracias !! Me lleve media hora viendo que era y no me dí cuenta jaja!! Además ya solucioné el resto del código (tenía un par de cosas mal en mi algoritmo), os lo dejo por si me podéis dar alguna mejora.
#include<stdio.h> #include<stdlib.h> int Factor(int a){ int b=2; while (a%b!=0) b++; if(a==1) b=1; return (b); } int main(void){ int x,y; printf("Introduzca un numero entero: "); scanf("%d",&x); if(x==1||x==-1) printf("1\n"); else{ y=Factor(x); while(Factor(x)>1){ printf("%d\n",y); x=x/(Factor(x)); y=Factor(x); } } system("pause"); return 0; } Gracias de nuevo!! Título: Re: Programa que factorize números enteros Publicado por: engel lex en 25 Enero 2014, 20:03 pm Einstein92
para publicar codigo usa las etiquetas GeSHi que hay arriba de los emoticonos a la derecha, si no, se más dificil de leer Código
Título: Re: Programa que factorize números enteros Publicado por: amchacon en 25 Enero 2014, 20:49 pm El algoritmo es sencillo aunque se puede hacer más eficiente (hablo de la función Factor).
Aquí hay un hilo sobre los números primos, también te sirve para calcular divisores: http://foro.elhacker.net/programacion_cc/codigo_para_calcular_los_numeros_primos-t405451.0.html Título: Re: Programa que factorize números enteros Publicado por: Einstein92 en 25 Enero 2014, 21:49 pm para publicar codigo usa las etiquetas GeSHi que hay arriba de los emoticonos a la derecha, si no, se más dificil de leer Perdona, tomo nota para la próxima :) El algoritmo es sencillo aunque se puede hacer más eficiente (hablo de la función Factor). Aquí hay un hilo sobre los números primos, también te sirve para calcular divisores: http://foro.elhacker.net/programacion_cc/codigo_para_calcular_los_numeros_primos-t405451.0.html Le he echado un vistazo, aunque hay conceptos que me superan jajaja. Curiosamente, el ejercicio anterior a este era el de realizar una función que calcule si un número es primo. No le vi aparente dificultad al algoritmo, pero no me ha llegado a funcionar mi código (y eso que no veo fallo alguno), ya que siempre me da que es primo o si cambio una cosa, que no es primo :huh: Les dejo el código aqui por si ven el fallo.. Código
Un saludo !! |