zoukankan      html  css  js  c++  java
  • 204 Count Primes

    • 什么是质数?

    只有1和它本身两个因数的数,就是质数(或素数);
    除了1和它本身以外,还有别的因数的数,就是合数;

    • 质数被用在了哪里?

    1,现在密码学,RSA加密问题,bob,alice,蒂夫三个小伙伴之间的通信的问题
    2、在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数最好设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。
    3、在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的质数次数的使用也得到了证明。实验表明,质数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。
    4、以质数形式无规律变化的导弹和鱼雷可以使敌人不易拦截。
    5、多数生物的生命周期也是质数(单位为年),这样可以最大程度地减少碰见天敌的机会。

    • 编程实现求质数的问题? 1,给定一个数N,打印出小于N的所有质数。2,给定一个数N,打印出自然数中最小的N个质数。

    https://program-think.blogspot.com/2011/12/prime-algorithm-1.html  [作者编程随想],作者显然和等着找工作的人不在一个维度上。

    • 试除法,

          因为从判断一个数x是不是质数,按照定义:把x除以[1,..,(x-1)]看余数是否为零?如果在除的过程中余数为零,则x不是质数。

          因为x如果由(除自身以外)的因数(什么是质因数),那么这个因数肯定小于等于x/2,可以判断  [1,...,x/2],看是否余数为零。

          又因为x,除了2以外,所有可能的质因数都是奇数,那么可以先判断2,再从[3...x/2]中的奇数即可

          又因为如果x不是质数,那么x的因子肯定是成对出现m1,m2的;m1,m2二个数中肯定有一个大于√x ,另一个小于√x ,那么可以先判断2,再从[3,..,√x ]中的奇数即可

          最后只需要  判断[3...  √x ] 中的质数即可。

    • 筛选法,

        首先,2是公认最小的质数,先把2的倍数去掉

        剩下2的那些大于2的数里面,最小的是3,那么3也是质数,

        接着把3的倍数都去掉,最小的数是5,5也是质数。

    来自维基百科的图片

    =============利用位图思想来做存储容器。

    leetcode 204 Count Primes

    Description:

    Count the number of prime numbers less than a non-negative number, n.

    class Solution {
    public:
        int countPrimes(int n) {
            bitset<10000000> b;
            for(int i = 0;i<n;i++){
                b.set(i,1);
            }
            int re = 0;
            for(int i = 2;i*i<n;i++){
                if(b[i]){
                    for(int k = i;k<(n+1);k = k+i){
                        if(k==i)continue;
                        b.set(k,0);
                    }
                }///
            }///for
    
            for(int i = 2;i<n;i++){
                if(b[i]){
                    re++;
                }
            }
            return re;
        }
    };

     

  • 相关阅读:
    C++库---json
    C++之单例模式
    mysql之字段(整形、字符串等)
    C++之数据类型,容器
    C++文件操作,判断两个文件内容是否相等(被修改)
    (转)mysql之index(索引)
    Django中的日期和时间格式 DateTimeField
    有关Django的smallDemo
    mysql 快速生成百万条测试数据
    从输入URL到页面加载发生了什么
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5549557.html
Copyright © 2011-2022 走看看