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...


 
  




 Autor
 Autor
		


 En línea
									En línea
								


 
						 
						