您的位置:首页 > 理论基础 > 计算机网络

http://projecteuler.net/problem=35 [Answer:55]

2011-12-06 23:34 483 查看
 
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
const size_t N = 1000000;
const size_t root = 1000;

vector<int> isprime(N);
fill( isprime.begin(), isprime.end(), 1 );
isprime[0] = 0;
isprime[1] = 0;
for ( size_t i = 2; i < root; ++i )
{
if ( isprime[i] != 0 )
{
for ( int j = i + i; j < N; j += i )
{
isprime[j] = 0;
}
}
}

int count = 0;
for ( size_t n = 2; n < N; ++n )
{
if ( isprime
!= 0 )
{
size_t tmp = n / 10;
size_t highest_weight = 1;
while ( tmp != 0 )
{
tmp /= 10;
highest_weight *= 10;
}

tmp = n / 10;
size_t m = n;
while ( tmp != 0 )
{
m = m % 10 * highest_weight + m / 10;
if ( isprime[m] == 0 )
{
break;
}
tmp /= 10;
}
if ( tmp == 0 )
{
++count;
}
}
}

cout << count << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  include