美文网首页
求素数(filter)

求素数(filter)

作者: 快乐的杀马特 | 来源:发表于2017-10-23 20:52 被阅读0次

    用filter求素数

    思路

    一、列出从2开始的所有自然数,构造一个序列:

    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

    二、取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉:

    3,4, 5,6, 7,8, 9,10, 11,12, 13,14, 15,16, 17,18, 19,20, ...

    三、取新序列的第一个数3,它一定是素数,然后用3把序列的3的倍数筛掉:

    5,6, 7,8,9,10, 11,12, 13,14,15,16, 17,18, 19,20, ...

    四、取新序列的第一个数5,然后用5把序列的5的倍数筛掉:

    7,8,9,10, 11,12, 13,14,15,16, 17,18, 19,20, ...

    不断筛下去,就可以得到所有的素数。


    解法

    1、构建一个3开始的奇数序列,无限生成序列。为n

    2、定义一个筛选函数:依次除以奇数,把不能整除奇数序列的数字挑选出来。

    3、定义一个生成器,不断返回下一个素数:

    4、设置退出循环的条件:1000以内的素数


    相关文章

      网友评论

          本文标题:求素数(filter)

          本文链接:https://www.haomeiwen.com/subject/bhczuxtx.html