• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++判断五位以内的对称素数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

输入描述:输入数据含有不多于50个的正整数n(0<n<232)

输出描述:对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。

题目分析:

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

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

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

参考代码:

#include <fstream>
#include <iostream>

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;
}

运行结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#的delegate与C的函数指针发布时间:2022-07-18
下一篇:
哥德巴赫猜想证明(C语言实现50以内的正偶数证明)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap