1
這兩個非常相似的代碼具有非常不同的速度。我不明白爲什麼。第一個比第二個(5s)慢得多(2分鐘)。兩個非常相似的代碼生成n下的素數但CPU時間差異很大
from numpy import sqrt
primes = [2]
for i in range(3, 1000000):
sq = int(sqrt(i))
aux = False
for j in primes:
if j>sq:
aux = True
elif i%j==0:
break
if aux:
primes.append(i)
=========================================== =======================
def isPrime(p, primes):
bound = numpy.sqrt(p)
i = 0
while(primes[i] <= bound):
if p % primes[i] == 0:
return False
i += 1
return True
def compute_primes(bound):
primes = []
primes.append(2)
for n in range(3, bound):
answer = isPrime(n, primes)
if answer:
primes.append(n)
return primes
compute_primes(1000000)
第一個具有無效的壓痕。 Python不會運行它。 – recursive
[強制通知](https://en.wikipedia.org/wiki/Analysis_of_algorithms#Empirical_orders_of_growth)。 –