コードは、nの値が小さい場合に実行される処理を行いますが、200万未満のすべての素数の合計を計算したいと思います。このコードでは無限の時間がかかるようです。私はPyScripterで働いています。このコードをより効率的にする方法はありますか?200万未満のすべての素数の合計を計算するコードが長すぎる
def is_prime(a):
return all(a % i for i in range(2, a))
def sum_of_primes(n):
sum = 0
x = 2
while x < n:
if is_prime(x):
sum = sum + x
x = x+1
return sum
def main():
print(sum_of_primes(2000000))
if __name__ == '__main__':
main()
あなただけの開始のための平方根までチェックする必要があります。また、素数をマークするために配列の配列を保持することも考えてください。 –
'x = x + 1'に字下げの問題があります。今すぐあなたのコードは無限ループに入ります。 – slallum
ここで2番目の答えを見てください:https://stackoverflow.com/questions/1801391/what-is-the-best-algorithm-for-checking-if-a-number-is-prime –