#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
const int N = 1000000;
const int D = 1000;
vector<bool> bPrime( N, true );
bPrime[0] = false;
bPrime[1] = false;
for ( int i = 2; i < D; ++i )
{
if ( bPrime[i] )
{
for ( int j = i + i; j < N; j += i )
{
bPrime[j] = false;
}
}
}
int count = 0;
int result = 0;
for ( int n = 10; n < N; ++n )
{
if ( bPrime[n] )
{
int mod = 10;
while ( mod <= n )
{
if ( !bPrime[n/mod] || !bPrime[n%mod] )
{
break;
}
mod *= 10;
}
if ( mod > n )
{
result += n;
count++;
if ( count == 11 )
{
break;
}
}
}
}
cout << result << endl;
return 0;
}
http://projecteuler.net/problem=37 [Answer:748317]
最新推荐文章于 2024-08-04 21:55:23 发布
本文介绍了一个C++程序,用于寻找前11个既是质数且其任意子串也是质数的数字。通过筛法预处理所有小于100万的质数,并检查每个质数的所有可能的子串是否为质数,最终输出符合条件的质数之和。
5747

被折叠的 条评论
为什么被折叠?



