zoukankan      html  css  js  c++  java
  • 回文素数

    Description

    因为151即是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 号是回文质数。 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数;

    Input

    第 1 行: 二个整数 a 和 b

    Output

    输出一个回文质数的列表,一行一个。

    Sample Input

    5 500

    Sample Output

    5
    7
    11
    101
    131
    151
    181
    191
    313
    353
    373
    383

    思路:数据量是1e8 正常方法做肯定不行  可以先打一个回文数的表(回文的数比素数少)

    (只打3 5 7位的就行 因为偶数位的不可能是素数)

    3位数可以通过2位数翻转前1位得来    5位数可以通过3位数翻转前两位而来  7位数可以通过4位数翻转前3位而来

    打完表后直接判断是不是素数就可以了

    AC代码:

    #include <algorithm>
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    #include <deque>
    using namespace std;
    typedef long long ll;
    ll ans[10100]={0};
    ll s[10000]={2,3,5,7,11,0};
    ll yang(ll p)
    {
        ll i,j,m=0;
        for(i=0;i<p;i++)
        {
            ll k=sqrt(s[i]);
            for(j=2;j<=k;j++)
            {
                if(s[i]%j==0)
                    break;
            }
            if(j==k+1)
                ans[m++]=s[i];
        }
        return m;
    }
    int main()
    {
        ll n,i,j,a,b,x,y,z,w;
        cin>>a>>b;
        ll p=5;
        for(i=10;i<99;i++)
        {
            s[p++]=10*i+i/10;
        }
        for(i=100;i<=999;i++)
        {
            x=i/10%10;
            y=i/100;
            s[p++]=100*i+x*10+y;
        }
        for(i=1000;i<=9999;i++)
        {
            x=i/10%10;
            y=i/100%10;
            z=i/1000;
            s[p++]=i*1000+x*100+y*10+z;
        }
        ll m=yang(p);
    //    for(i=0;i<m;i++)
    //        cout<<s[i]<<" ";
        for(i=0;i<m;i++)
        {
            if(ans[i]>=a&&ans[i]<=b)
                cout<<ans[i]<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    将军与妓
    LINUX SHELL
    LINUX FTP
    Java API的常用包
    PYTHON LOGGING模块
    json转xml
    xml转json
    PYTHON DJANGO学习笔记
    PYTHON爬取66影视的电影下载链接,有搜索功能
    JAVA PROPERTIES配置文件使用方法
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702695.html
Copyright © 2011-2022 走看看