筛选法求素数
题目
算法思路
- 将长度为N+1的列表全赋值为1
- 首先将索引0和1处的值为0
- 然后遍历列表,将值为1处的索引的倍数索引值为0
- 最后剩下的值为1的索引就是素数
- 将索引值存入另一个列表
程序实现
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)


 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号