zoukankan      html  css  js  c++  java
  • Prime Palindromes chapter 1.5

      求回文素数,开始直接枚举判断果断tle,后来网上找优化,发现除了11,偶数长度的回文数都可以被11整出,应为上限是100,000,000,所以只需要在长度为 1,3,5,7里寻找(11除外),

    看到大牛门直接先用循环生成长度为奇数的回文数再判断素数,我偷鸡了下,直接在a=<i=<b里加速,if(i=999) i=10001...勉强过了 万幸,生成方法参考http://www.cnblogs.com/zjbztianya/archive/2013/01/31/2886509.html

    /*
    
    ID: hubiao cave
    
    PROG: pprime
    
    LANG: C++
    
    */
    
    
    
    
    #include<iostream>
    
    #include<fstream>
    
    #include<string>
    
    using namespace std;
    
    
    bool IsPrime(int);
    bool IsPa(int);
    char buf[10];
    bool getLength(int n);
    int main()
    
    {
    
        ifstream fin("pprime.in");
    
        ofstream fout("pprime.out");
        int a,b;
        fin>>a>>b;
    
        for(int i=a;i<=b;i++)
        {
            if(i==999)
            {
                i=10001;
            }
            if(i==99999)
            {
                i=1000001;
            }
            if(i==9999999)
                break;
            if(IsPa(i))
                if(IsPrime(i))
                fout<<i<<endl;
        }
    
    
        
    
        return 0;
    
    
    }
    
    bool IsPrime(int n)
    {
        if(n/5==0&&n>5)
            return false;
        if(n==5)
            return true;
        for(int i=2;i*i<=n;i++)
        {
            if(n%i==0)
                return false;
        }
        return true;
    }
    
    bool IsPa(int n)
    {
        int m=n,i=1;
        while(m/10)
        {
            buf[i]=m%10;
            i++;
            m=m/10;
        }
        buf[i]=m;
        if(i==1)
            return true;
        for(int p=1;p<=i;p++)
        {
            if(buf[p]!=buf[i-p+1])
                return false;
        }
        return true;
    
    }
    bool getLength(int n)
    {
        if(n==11)
            return true;
        if(n/10>=1&&n/10<=9)
            return false;
        if(n/1000>=1&&n/1000<=9)
            return false;
        if(n/100000>=1&&n/100000<=9)
            return false;
        if(n/10000000>=1&&n/10000000<=9)
            return false;
        return true;
    }
  • 相关阅读:
    huffman编码压缩算法(转)
    ReLU 和sigmoid 函数对比以及droupout
    分类中数据不平衡问题的解决经验(转)
    C++ 虚函数表解析
    const 和宏的区别
    static小结
    javascript技巧字典【转藏】
    七个心理寓言【转】
    购物车悬浮 + 购物数量显示
    好看的图标
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3260933.html
Copyright © 2011-2022 走看看