#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