Hola!
Pues resulta que haciendo el ejercicio de C (en C++) de la calculadora de primos, el resultado que obtengo es que imprime todos los números desde el 2 (el 1 lo obvio porque no es primo) hasta el 101, a pesar de que la función que determina si el número es primo o no funciona bien (adjunto un programita que imprime si el número es primo o no, está hecho para controlar que funciona).
Si algún alma caritativa me puede dar alguna pista le estaría muy agradecido ;-)
Aquí (http://pastebin.com/wf0WC2YC) el programa entero, y aquí (http://pastebin.com/kf5rfhZj) la calculadora de primos.
Hola a todos...
Pues le pedí ayuda a un amigo y al final con cambiar un par de cosas (mi calculadora funciona mejor que la suya, a pesar de que él estudia ingeniería y yo filosofía jejeje) ya me funciona, aquí está el programa (http://pastebin.com/YLn13g8t).
:D :D >:( ::)
Hola bueno no se por que me gustan estos minutos blancos
Bueno simplemente queria mencionar que existen un método llamado la criba de erastotenes, con el cual es mas rápido calcular números primos grandes, solamente eso si es que a alguien le sirve
tu propuesta es incorrecta... no son 100 primeros numeros primos, son los primos entre el 1 y el 100
el metodo más rapido para primos vendría siendo
bool primo(int numero){
if(numero<=3)return numero >= 2;
if((numero&1)==0) return false;//si el ultimo bit es 0 es par
if(numero%3==0) return false;
int i;
for(i=5;i*i<=numero;i+=6){
if(numero%i==0) return false;
if(numero+2%i==0) return false;
}
return true;
}
Si no quieres almacenar solo los numeros primos no es necesario crear aux de n+1 posiciones. Lo importante son los dos fors que solos calculan los numeros que NO son primos.
vector <bool> Erastotenes(int n) {
vector <bool> aux(n + 1, true); //vector donde marca si un numero es primo o no
for (int i = 2; i*i <= n; ++i) {
for (int j = 2*i; j < aux.size(); j = j + i) {
aux[j] = false;
}
}
return aux;
}