快速从用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])