• 埃拉托斯特尼筛法


    埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把小于等于根号n的所有素数的倍数剔除,剩下的就是素数。

    这是什么意思呢?

    以100为例,我们先创建一个拥有101(0-100)个数字的数组。

    先使用最小的素数2,将所有2的倍数(除2本身)标记为合数。

    接下来2+1的数是3,此时检查3是不是素数,检查标记,发现没有被标记为合数(因为不是2的倍数),所以再将所有3的倍数标记为合数。

    下一个数是4,发现它已经被标记为合数,所以他可以表示为某一个小于4的素数的乘积(2*2),所以4的倍数必定含有因子2,所以所有4的倍数已经全部被标记过,直接跳过4。

    下一个数是5,没有被标记为合数,把所有小于等于100的5的倍数标记为合数

    ………

    这样一直计算到sqrt(100),即10。

    那么为什么就在10这个地方停止了呢?数11呢?因为所有的小于n的11倍数已经被标记过了,例如22,33,44,55…分别有因子2,3,4(2*2),5,而唯一可能没有被标记的数11*11已经超过n了。

     

     

  • 相关阅读:
    Vue监听器、过滤器
    Vue生命周期、计算属性
    数组去重
    ES6总结
    学习笔记--html篇(1)
    学习整理--flex布局(1)
    对块作用域与变量函数提升再添新认识
    了解使用web workers
    js中的事件循环模型与特殊的定时器
    操作系统、浏览器与js之间的一些概念与联系
  • 原文地址:https://www.cnblogs.com/doubest/p/11965744.html
Copyright © 2020-2023  润新知