您的位置:首页 > 其它

USACO 1.5 Prime Palindromes

2011-05-02 14:13 323 查看
/*
ID: jiafeim1
PROG: pprime
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

#include <cmath>
long pp[200000];
long top = 0;

bool check(long num)
{
if(num%2 == 0) return false;
long end = std::sqrt((float)num)+1;
for(int i=3;i<=end;i+=2)
{
if(num%i==0) return false;
}
return true;
}

int main()
{
ofstream fout ("pprime.out");
ifstream fin ("pprime.in");
pp[0] = 5;
pp[1] = 7;
pp[2] = 11;
top = 3;
for (int a1 = 1; a1 <= 9; a1 += 2)
{
for (int a2 = 0 ; a2 <= 9; ++a2)
{
pp[top++] = a1 + a2 * 10 + a1 * 100;
}
}
for (int a1 = 1; a1 <= 9; a1 += 2)
{
for (int a2 = 0 ; a2 <= 9; ++a2)
{
for (int a3 = 0; a3 <= 9; ++a3)
{
pp[top++] = a1 + a2 * 10 + a3 * 100 + a2 * 1000 + a1 * 10000;
}
}
}
for (int a1 = 1; a1 <= 9; a1 += 2)
{
for (int a2 = 0 ; a2 <= 9; ++a2)
{
for (int a3 = 0; a3 <= 9; ++a3)
{
for (int a4 = 0 ; a4 <= 9 ; ++a4)
{
pp[top++] = a1 + a2 * 10 + a3 * 100 + a4 * 1000 + a3 * 10000 + a2 * 100000 + a1 * 1000000;

}
}
}
}

long min,max;
fin>>min>>max;
int start;
for(start = 0;start!=top;++start)
{
if(pp[start]>=min) break;
}

for(;start!=top;++start)
{
if(pp[start]>max) break;
if(check(pp[start]))
fout<<pp[start]<<endl;
}

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