题目内容:判断一个数是否为对称三位数素数。所谓“对称”是指一个数,倒过来还是该数。例如,375不是对称数,因为倒过来变成了573。
输入描述:输入数据含有不多于50个的正整数(0<n<232)。
输出描述:对于每个n,如果该数是对称三位数素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。
题目分析:素数是指只能被1和本身整除的自然数(1不是素数),前几位素数是2,3,5,7,11,13,17,19,23,27,29,31。
参考代码:
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
bool isPrime(int);
int main(int argc,char * argv[])
{
int n;
while(cin>>n)
{
cout<<(n>100&&n<1000&&n/100==n%10&&isPrime(n)?"Yes\n":"No\n");
}
system("pause");
return 0;
}
bool isPrime(int n)
{
int sqr=sqrt(n*1.0);
for(int i=2;i<=sqr;i++)
{
if(n%i==0) return false;
}
return true;
}
效果如图: