筛选法求素数
题目
算法思路
- 将长度为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)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步