#include <iostream> #include <bitset> using namespace std; const int n = 1000000; bitset<n+1> criba; void generarCriba() { criba[0] = criba[1] = true; for(int i = 2 ; i*i<=n; i++) if(!criba[i]) for(int j = i+i; j<=n; j +=i ) criba[j]= true; } int main() { generarCriba(); int cont = 4;//2,3,5,7 ya cuentan como primos circulares int cc = 1; int sncc= 100; int nc = 10; for(int i = 10 ; i<n; i++) { if(i==sncc) { cc++; sncc *=10; nc *= 10; } if(!criba[i]) { int num = i; int c = 0; for(int u = 1 ; u<=cc; u++) { int d = num%10; num /= 10; num = (d*nc+num); if(!criba[num]) c++; else break; } if(c == cc) cont++; } } cout <<"Resultado final = "<< cont<< endl; return 0; }
martes, 10 de abril de 2012
Project Euler 35
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario