buenas. Peazo codigos grandes que poneis. Aqui te pongo una funcion recursiva pequeñita que devuelve el proximo numero primo. Es decir, tu le pasas un numero (sobreentiende que es primo) y te muestra el siguiente.Hey mr...
int primoRecursivo(int num)
{
num++;
bool primo=true;
for (y=2;y*y<=num && primo;y++)
if (num%y==0) primo=false;
if (primo)
return num;
else
return primoRecursivo(num);
}
Si ahora, lo que quieres es mostrar x numeros primos con un simple bucle
primo=1;
for (z=0;z<x;z++)
{
primo=primoRecursivo(primo);
printf("Numero primo numero "+(z+1)+"es "+primo+"\n");
}
como veis este codigo es mucho mas reducido. Eso si, hay q entender recursivas xDD
EDITADO: la primera condicional de la recursiva tiene q ser <=, sino los numeros cuadrados (4,9,16,25...) los daría como primos xDD
2000000....vamos a ver, habla de enteros, por eso hice la funcion con int. Si le pongo float problema solucionado. Solo tienes que cambiar la declaracion de la cursiva deEn 32 bits int = float asi qeu eso es lo de menos.
int primoRecursivo(int num)
a
float primoRecursivo(float num)
porque si te diste cuenta primo no lo inicielice ni a int ni a double ni a float.
De todos modos si creeis que recursiva es demasiado, aqui os pongo la funcion sin recursividad:
float primoNoRecursivo(float num)
{
bool primo=true;
bool division;
float y;
for (num++;primo;num++)
{
division=true;
for (y=2;y*y<=num && division;y++)
if (num%y==0) division=false;
if (division) primo=false;
}
return num;
}
Vaya, casi mas pequeña que la recursiva.
Creeis vosotros que "alguien que empieza" entiende mejor esto que la recursiva?? Sinceramente, yo creo que este codigo es más rebuscado y menos claro. Mas preciso, más rápido, mas "economico" debido a no ser recursiva y todo lo que querais, pero weno.
En esta si puse float, no me vayan a salir con las mismas (y si me sales con las mismas con el tope de float, hazlo con un vector de numeros (cada posicion un solo digito) a ver si asi te gusta mas, que ahi no tienes limite pq el vector lo puedes hacer cuan largo quieras).