python:主动乘法删选法,45秒求定 1亿内素数

 1 from time import time
 2 from json import load
 3 t1 = time()
 4 with open("筛选法求10的0次方到4次方范围内素数共1229个.json", "r")as fjr:
 5     ak = load(fjr)
 6 N = int(1e8)
 7 td = list(range(N + 1))
 8 for i in ak:
 9     for j in range(i, int(N / i) + 1):
10         td[i * j] = 0
11 td = set(td)
12 td = list(td)
13 td.remove(0)
14 td.remove(1)
15 
16 t2 = time()
17 tt = t2 - t1
18 ff = "\n筛选法phthon求10的0次方到8次方范围内素数共{}个耗时{}秒".format(len(td), tt)
19 print(ff)

我一直在思考用主动乘法的删选法去寻找大范围内的素数。前不久看到一个大牛的脚本,受启发后写出如上python,运行后:45秒得到1亿内全部素数。

 python:主动乘法删选法,45秒求定 1亿内素数

 

上一篇:如何用flink sql写,3h,7h,1d内pv,uv


下一篇:2021/9/10模拟赛总结