zoukankan      html  css  js  c++  java
  • 筛法求素数质数

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

    给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......

    python代码如下:

    #!/usr/bin/python3.4
    # -*- coding: utf-8 -*-
    
    def divided(array):
        arrlist = []
        for i in range(0, len(array)):
            if i != 0:
                if array[i] % array[0] != 0:
                    arrlist.append(array[i])
        return arrlist, array[0]
    
    
    def getprimes(number):
        arrlist = []
        for i in range(2, number + 1):
            arrlist.append(i)
    
        primes = []
        newarrlist, prime = divided(arrlist)
        primes.append(prime)
        while True:
            array = newarrlist
            if len(array) == 0:
                break
            else:
                newarrlist, prime = divided(array)
                primes.append(prime)
        print(primes)
    
    
    if __name__ == "__main__":
        number = 120
        getprimes(number)
    

    运行结果为:

    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
    
  • 相关阅读:
    Windows系统之间文件互传
    PHP MySQL -2021.01.30
    Python MySQL
    [转载]python之函数的使用及异常处理2021.1.30
    python之文件操作
    Python学习-2021.1.28
    [转载]Metasploit漏洞攻击
    [转载]使用命令给windows用户提权
    [转载]nmap的使用
    Windows和Linux简单命令的总结
  • 原文地址:https://www.cnblogs.com/TTyb/p/6268654.html
Copyright © 2011-2022 走看看