【发布时间】:2021-04-14 19:59:21
【问题描述】:
我有两个函数:isPrime 和 alsoPrime。如果数字 (x) 是质数,两者都意味着返回 True 或 False。 isPrime(x, pLis) 处理不断增长的素数列表,并查看 x 是否是任何素数的倍数。 alsoPrime(x) 搜索从 3 开始到 x 的根结束的所有奇数。然后我使用一个 for 循环,从 3 开始,以 2 为间隔上升。
我希望 isPrime 更快,因为它应该跳过数字,即:
isPrime -> 3, 5, 7, 11, 13, 17, 19
also Prime -> 3, 5, 7, 9, 11, 13, 15, 17, 19
但alsoPrime 的速度要快得多 - 搜索前 100 万个数字时快 100 倍。
谁能解释一下原因?每次拨打pLis是否需要很长时间?
def isPrime(x, pLis):
for item in pLis:
if x % item == 0:
return False
return True
def alsoPrime(x):
for i in range(3, round(x**0.5)+1, 2):
if x % i == 0:
return False
return True
【问题讨论】:
标签: python python-3.x optimization primes