Título: Programacion en C. Fallo codificar numeros primos Publicado por: nenito_sevillista en 23 Noviembre 2010, 20:36 pm Hola, podrían ayudarme y decimirme qué me falla en este codigo??
gracias. Código: void main(void) Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Mr.Blue en 23 Noviembre 2010, 20:46 pm Código
No veo ninguna falla, de logica. Por ahi te falto poner las librerias? o #include <windows.h> para system (PAUSE); Sugerencias Algunas cosas para tener encuenta es no usar la llamda al sistema para hacer pausa para eso tenes getchar ();, y la estuctura del main deberia ser int main () con un return al final como se ve ahi, para indicar si hubo un error o no. declarar i =2; me parece al cohete jeje, pone if (n%2==0) i es lo mismo y usas menos variables. otra cosa, porq usar tantos if? if (n%2==0) puts ("es primo"); else puts ("no es primo"); y eliminas lineas de codigo las declaraciones de variables puede ser asi tmb. int i, n, primo; separados por coma y punto y coma en la ultima variable declarada Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Beakman en 23 Noviembre 2010, 22:05 pm Ahi no estas averiguando si el numero es primo.
Estas averiguando si el numero es par. Para averiguar si es primo tenes que hacer un ciclo desde 1 hasta el numero ingresado y preguntar si es divisible por cada numero. Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Akai en 23 Noviembre 2010, 22:15 pm tenes que hacer un ciclo desde 1 hasta el numero ingresado y preguntar si es divisible por cada numero. Error, Desde 1 hasta el número/2. A partir de numero/2, ya no va a haber más divisores de él. Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Beakman en 23 Noviembre 2010, 22:19 pm Código: Error, Desde 1 hasta el número/2. A partir de numero/2, ya no va a haber más divisores de él. Si, estaría de mas hacerlo hasta el numero. Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: piou en 23 Noviembre 2010, 22:41 pm Ahí lo que estás mirando es si el número es divisible por 2. Me parece que querías hacer un bucle e ir subiendo, porque si no lo es le sumas 1 a la variable i, pero te has equivocado.
Tienes que hacer un bucle desde 2 hasta n/2, en cuanto el resto sea 0, activas un bool o algo y sales del bucle, porque significa que no es primo. Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Darioxhcx en 23 Noviembre 2010, 23:11 pm Código: #include <stdio.h> Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Akai en 23 Noviembre 2010, 23:33 pm Esto... Darioxhcx... permíteme que mejore un poco tu código.
Código ¿Para qué usar getchar o system pause teniendo esto? --> http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: do-while en 24 Noviembre 2010, 00:28 am ¡Buenas!
Realmente llegar hasta n/2 es perder el tiempo. El mayor de los divisores mas pequeños es la raiz cuadrada, ya que si un divisor sobrepasa la raiz cuadrada es porque el otro factor es menor que la raiz cuadrada: Si a * b = c y a2 > c entonces b2 < c, ya que de lo contrario a2 * b2) > c * c = c2 y esto impllica, tomando raices, que a * b > c, lo cual es una contradiccion. Por lo tanto b2 < c lo que es lo mismo que b < c1/2 ¡Saludos! Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: Beakman en 24 Noviembre 2010, 07:58 am ¡Buenas! Claro. Esta bien de cualquiera de esas formas.Realmente llegar hasta n/2 es perder el tiempo. El mayor de los divisores mas pequeños es la raiz cuadrada, ya que si un divisor sobrepasa la raiz cuadrada es porque el otro factor es menor que la raiz cuadrada: Si a * b = c y a2 > c entonces b2 < c, ya que de lo contrario a2 * b2) > c * c = c2 y esto impllica, tomando raices, que a * b > c, lo cual es una contradiccion. Por lo tanto b2 < c lo que es lo mismo que b < c1/2 ¡Saludos! Igual no es un un super código. En ESTE caso creo que no influye mucho una cuenta mas o una cuenta menos. Esto... Darioxhcx... permíteme que mejore un poco tu código. Código ¿Para qué usar getchar o system pause teniendo esto? --> http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html ERROR: Dice que 4 es un numero primo. y no lo es. Este es mi codigo: Código
Título: Re: Programacion en C. Fallo codificar numeros primos Publicado por: do-while en 24 Noviembre 2010, 22:52 pm ¡Buenas!
En este caso si que infuye una cuenta mas que una menos. Una algoritmo es de orden O(n) y el otro de orden O(n1/2. Si tienes que s(n/k) = n/(kn1/2) y haces limite de s(n) en +infinito, te dara +infinito. Esto quiere decir que n crece mucho mas que n1/2, para numeros grandes, lo que significa que hacer comparaciones hasta la raiz cuadrada es mas eficiente que hacerlo hasta el mismo numero o hasta su mitad. ¡Saludos¡ |