私はすべての素数のリストを特定の数に戻そうとしています(これはProject Euler問題7の場合です)。私はPythonにとって非常に新しいですが、私の問題は言語ではないようですが、論理エラーです。私のコードはどこにありますか[初心者のPython]
import math
import sys
def is_prime(n):
if n%2 == 0:
return False
for i in range(3, int(math.sqrt(n))+1, 2):
if n%i == 0:
return False
return True
def prime_counter(n):
result = [2]
while len(result) < n:
for i in range(3, sys.maxsize, 2):
if is_prime(i):
result.append(i)
break
return result
print (prime_counter(6))
[2、3、3、3、3]が表示されます。なぜiを増やしてリストの新しい数字を評価しないのですか?なぜ3を続けているのですか?
あなたは決して 'i'をインクリメントせず、あなたは' for'ループを壊します。あなたはどこかにカウンタを追加するべきです – Till