首页 > 其他 > 详细

筛选法求素数

时间:2020-05-17 22:06:55      阅读:54      评论:0      收藏:0      [点我收藏+]

题目

给出一个数N,输出2-N之间的所有素数。

算法思路

  1. 将长度为N+1的列表全赋值为1
  2. 首先将索引0和1处的值为0
  3. 然后遍历列表,将值为1处的索引的倍数索引值为0
  4. 最后剩下的值为1的索引就是素数
  5. 将索引值存入另一个列表

程序实现

def getPrime(N):
    prime = []
    flag = [1 for i  in range(0,N+1)]
    flag[0] = 0
    flag[1] = 0
   
    for i in range(1,N+1):
        if flag[i] == 1:     
            step = i
            for  j in range(i+i,N+1,step):  
                flag[j] = 0    # 将是i索引倍数的值值为0
    for i in range(len(flag)):
        if flag[i] == 1:
            prime.append(i)
    return prime  

测试用例

N = 30
prime =  getPrime(N)
str1 = ‘‘
for s in prime:
    str1 = str1 + ‘\t‘+ str(s) 
print(str1)

技术分享图片


筛选法求素数

原文:https://www.cnblogs.com/sinlearn/p/12907208.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!