设为首页 加入收藏

TOP

C++判断五位以内的对称素数
2014-11-24 02:31:49 来源: 作者: 【 】 浏览:1
Tags:判断 五位 以内 对称 素数

题目内容:判断一个数是否为对称且不大于五位数的素数。

输入描述:输入数据含有不多于50个的正整数n(0
输出描述:对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。

题目分析:

(1)判断它是否是五位以内的数,即该数是否小于100000.

(2)判断该数是否对称,以下三种情况成立:该数是一位数或11;该数是三位数,即该数大于100且小于1000,且该数的百位数等于个位数;该数是五位数,即该数大于10000且前两位等于后两位的逆序,即该数除以1000的商等于个位数与十位数颠倒位置。因四位数的对称数不可能是素数,所以不予考虑。

(3)判断该数是否是素数。首先判断该数是否是1,若是1则不是素数。然后判断该数是否是非2的偶数,若是则非素数。最后从3开始,每次加2,直到其平方大于该数,判断该数对其取余是否为0.若出现取余为0的情况,则该数非素数。

参考代码:



#include


#include



using namespace std;


bool isPrime(int n)


{


if(n==1) return false;


if(n!=2&&n%2==0) return false;


for(int i=3;i*i<=n;i=i+2)


{


if(n%i==0) return false;


}


return true;


}


bool isSym(int n)


{


if(n<12&&n!=10) return true;


if(n>100&&n<1000&&n/100==n%10) return true;


if(n>10000&&n/1000==n%10*10+n/10%10) return true;


return false;


}


int main(int argc,char * argv[])


{


int n;


while(cin>>n)


{


cout<<(n<100000&&isSym(n)&&isPrime(n) "Yes\n":"No\n");


}


system("pause");


return 0;


}


运行结果:



推荐阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++实现01串排序 下一篇S3C2440时钟频率

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: