zoukankan      html  css  js  c++  java
  • Prime Palindromes

    题目大意:求出区间[a,b]之间的回文质数。 a<=b<=10^8;

    解题过程:

    1.先打个素数表,新学了个 欧拉筛法,是对普通筛法的改进。普通筛法是每找到一个素数,就把它的所有倍数标记成1,那么对于一个合数,它会被它的所有质因数标记一次。那么就浪费了时间(复杂度O(NloglogN))。欧拉筛法的复杂度可以降到O(N),

    它的优化在于 找到一个质数的时候,把所有是它的质数倍的数标记成1(搜一遍已经找到的质数),如果某一个质数是它的约数,那么break;见代码:

     1 void generate_prime()
     2 {
     3     int c;
     4     check[1]=1;
     5     for (int i=2;i<=10000;i++)
     6     {
     7         if (!check[i])
     8             prime[++cnt]=i;
     9         for (int j=1;j<=cnt;j++)
    10         {
    11             c=i*prime[j];
    12             if (c>10000)
    13                 break;
    14             check[c]=true;
    15             if (i % prime[j]==0)
    16                 break;
    17         }
    18     }
    19 }

    2.接下来是如何产生回文数,首先0到9必定是,先放到表中。需要分情况考虑:

    A.回文数的位数 是偶数。 那么从1到10000枚举回文数的一半,如何产生另一半。

    B.回文数的位数 是奇数, 那么先枚举最中间的那个数,然后枚举左边一半,从1到1000;

    3.最后写个判断质数的函数,把所有符合要求的放入一个表中,排个序输出即可。

  • 相关阅读:
    js 置顶操作
    js input输入数量控制
    js 时间倒计时
    html内容垂直居中
    大图片随浏览器水平居中显示
    img,display:inline相关间隙样式问题
    js淡入淡出轮换思想(1)
    js 禁止|阻止滚动条滚动
    kotlin学习--第一个kotlin项目
    jdk8+Mybatis3.5.0+Mysql读取LongBlob失败
  • 原文地址:https://www.cnblogs.com/vb4896/p/3926929.html
Copyright © 2011-2022 走看看