pgq39 2022-12-01 16:47
浏览 9
已结题

力扣中的一个快速筛大整数内所有素数的python算法

问题遇到的现象和发生背景

快速从用python筛出22亿内所有素数(速度快于欧拉筛),找到个题解但看不懂

用代码块功能插入代码,请勿粘贴截图
# 返回所有素数(小于n)的数量
n=int(input('请输入一个整数:'))
n -= 1
if n < 2:
    print(0)
r = int(n ** 0.5)
V = [n//d for d in range(1, r + 1)]
V += list(range(V[-1] - 1, 0, -1))            
S = {v: v - 1 for v in V}
#print(S)
for p in range(2, r + 1):
    if S[p] == S[p - 1]:
        continue
    p2 = p * p
    sp_1 = S[p - 1]
    for v in V:
        if v < p2:
            break
        S[v] -= S[v//p] - sp_1
print(S[n])

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月9日
    • 创建了问题 12月1日