ayer a la noche estaba teniendo un problema, si yo queria encontrar los 10 primeros primos, me daba solamente 2, 3 y el programa quedaba ejecutando, como en un bucle... este era el codigo:
Código
#include <iostream> #define pl '\n' #include <cstdlib> #include <cstdio> using namespace std; /*Determine los 1000 primeros primos.*/ int main(int argc, char *argv[]) { int n=2,c=n-1,suma,p,contp=0; cout<<"Ingrese la cantidad de numeros primos que desea obtener"<<pl; cin>>p; //p=cantidad de primos que quiero obtener while (contp<p)//mientras los primos que obtube<los que quiero... { while (c>1) { suma*=n%c; c-=1; } if (suma!=0) { cout<<"El numero "<<n<<" es primo"<<pl; contp++;//cuenta que obtubo un primo } suma=1; //<- me faltaba esto! n++;// c=n-1; } system("PAUSE"); return 0; }
yo pensaba que cuando el numero no era primo (como seria el caso del 4, que no me aparecia) y pasaba por el lado falso del if no hacia n++, estuve largo rato rompiendome la cabeza hasta que me di cuenta que me faltaba volver a darle un valor distinto de 0 a suma, sino una vez que un numero no fuera primo, en adelante suma iba a ser siempre 0, que error tonto...