#include <iostream> #include <algorithm> using namespace std; const int n= 7654322; bool esPrimo[n+1]; void generarCriba() { for(int i = 3 ; i <= n; i+=2) esPrimo[i] = true; for(int i = 4 ; i <= n; i+=2) esPrimo[i] = false; esPrimo[2] = true; for(int i = 3; i*i <= n; i+=2) if(esPrimo[i]) for(int j = i+i ; j <= n; j+=i) esPrimo[j] = false; } int main() { generarCriba(); string ini = "7654321"; string fin = "1234567"; int i = 0 ; while(ini.compare(fin)!=0) { if(((ini[6]-'0')&1)!=0) if(esPrimo[atoi(ini.data())]) { cout << ini << endl; break; } prev_permutation(ini.begin(),ini.end()); } return 0; }
martes, 10 de abril de 2012
Project Euler 41
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario