1
これら2つの非常によく似たコードは、速度が非常に異なります。なぜか分からない。最初のものは2番目のもの(5秒)よりずっと遅い(2分)。nの下で素数を生成するのに非常に似ている2つのコード、しかし非常に異なる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)。 –