#include <iostream>
#include <bitset>
#include <math.h>
using namespace std;
bool esPrimo(int n)
{
if(n==1)
return false;
for(int i = 2; i*i<=n; i++)
if(n%i==0)
return false;
return true;
}
bool esCPI(int n)
{
int nc = 10;
while(nc<n)
{
if(!esPrimo(n%nc))
return false;
nc *= 10;
}
return true;
}
int main()
{
int ini=0,fin=0;
int term[] = {1,3,7,9};
int td[100]= {2,3,5,7};
int pos=4;
ini = 0;
fin = 3;
for(int cd = 1; cd<=9; cd++)
{
for(int i=ini ; i<=fin; i++)
{
for(int t = 0 ; t<=3; t++)
{
int ope = td[i]*10+term[t];
if(esPrimo(ope))
td[pos++] = ope;
}
}
ini = fin+1;
fin = pos-1;
}
int sum = 0 ,cant = 0;
for(int i = 4; i<=fin ; i++)
if(esCPI(td[i]))
{
cout << td[i] << endl;
sum += td[i];
cant++;
}
cout << "cantidad total = "<<cant<<endl;
cout << "resultado final = "<<sum<<endl;
return 0;
}
martes, 10 de abril de 2012
Project Euler 37
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario