本帖最后由 xiaomeng242 于 2022-8-9 16:47 编辑
@skystars 我用numpy计算需要用 3-6ms,如果是纯python计算的话需要大约1000ms ,而且代码量也不过10多行(去掉print和注释)
代码:
[Python] 纯文本查看 复制代码 import time
import numpy as np
start_time = time.time()
# 埃拉托斯特尼筛法:必须把不大于100开根号(即10)以内的所有质数的倍数剔除。
a = np.arange(1, 10000)
n_max = int(np.sqrt(len(a)))
is_prime = np.ones(len(a), dtype=bool) # 创建100个元素的数组,用来标记是否为质数
is_prime[0] = False
for i in range(2, n_max):
if i in a[is_prime]: # 跳过非质数
is_prime[(i ** 2 - 1)::i] = False # 减一是为了修复从0开始索引的问题
print(a[is_prime])
end_time = time.time()
print("time cost:", float(end_time - start_time) * 1000.0, "ms")
|