#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