Título: NUMEROS PRIMOS Publicado por: ALONSOQ en 15 Junio 2012, 11:29 am Buenos días,
Soy nuevo en el foro, llevo muy poco tiempo estudiando el lencuaje C, y estoy tratando de hacer un programa que ingresando 2 numeros diga los primos que hay entre ambos. Esto es lo que he hecho. Podeis reiros.... no os corteis; pero por favor alguien me puede decir que falla? /*Escribir un programa que nos pida por pantalla dos números enteros y nos muestre los números primos que hay entre ellos.*/ #include <stdio.h> #include <conio.h> main () { int x, c, y; printf(" dime un número"); scanf("%i", &c); printf(" dime otro número mayor"); scanf("%i", &y); while (c<=y) { for (x=2;x=c/2;x++) if ((c%x!=0)) printf("%i",c); c++; getch(); } } Muchas gracias Título: Re: NUMEROS PRIMOS Publicado por: Saberuneko en 15 Junio 2012, 11:50 am Primero, debes recordar que '=' asigna valores y '==' los compara.
Por otro lado, tu problema radicaba del bucle for. La condición hacía que tu programa no entrase en el bucle para comprobar el resto de la división. Código: for (x=2;x=c/2;x++) La condición que necesitas es: Código: for (x=2;x<=c/2;x++) Código
En resumen, lo tenías casi todo hecho, sólo te equivocaste con un bucle. Para la próxima, te sugiero que cuides un poco más la identación y utilices los tags GESHI de code para que se vea mejor la estructura. Título: Re: NUMEROS PRIMOS Publicado por: ALONSOQ en 15 Junio 2012, 14:04 pm Muchísimas gracias por tu ayuda; sin embargo hay ciertas cosas que no me quedan claras:
if ((c%x!=0)) : Me has modificado!= por ==. Sin embargo yo haía puesto esa instrución con el fin de pedirle que cuando al dividir por un número fuera distinto de 0 entonces lo imprimiese ( es primo). ( Ese comando de tosas formas es incompleto pues puede ocurrir que por ejemplo el 13 dividido por si mismo de igual a 0 y sin embargo sí es primo. Por otro lado no entiendo porqué has puesto p=1. Lo he compilado y no me ejecuta el programa ¿ que te parece? un saludo Título: Re: NUMEROS PRIMOS Publicado por: maxim_o en 15 Junio 2012, 15:10 pm Una forma de encontrar numeros primos es encontrar un divisor >1 y < que la mitad de ese numero...
Si por ejemplo pones el 7. Dividirias entre 2,3 no da de resto 0 es primo el 8 entre 2 ya encuentra un divisor, no es primo... while (c<=y) { for (x=2;x<=c/2;x++) { if (c%x==0) p++; } if (p==1) printf("%i es primo /n" , c) ; c++; p = 1; getch(); } Título: Re: NUMEROS PRIMOS Publicado por: Saberuneko en 15 Junio 2012, 17:58 pm Lo he editado y dejado como estaba antes de estropearlo.
Había puesto una booleana p, que me olvidé quitar Eso también explica el uso de == en vez de !=. Al intentar desaparecer dicha booleana lo dejé mal. Lo siento, es que a veces soy imbécil... Si funciona, ¿para qué lo toqué? Te lo dejo como lo tenía cuando funcionó. Pruébalo ahora. Título: Re: NUMEROS PRIMOS Publicado por: ALONSOQ en 16 Junio 2012, 18:13 pm Muchas gracias por tu ayuda; me lo has explicado clarísimo
un saludo |