問題は、1000 番目の素数を見つけることです。このために、次の python コードを作成しました。問題は、10 番目と 20 番目の素数について正しい答えが得られることですが、その後は 10 ずつインクリメントするたびに 1 つずれてしまいます。ここでバグをキャッチできません:(
count=1 #to keep count of prime numbers
primes=() #tuple to hold primes
candidate=3 #variable to test for primes
while count<20:
for x in range(2,candidate):
if candidate%x==0:
candidate=candidate+2
else : pass
primes=primes+(candidate,)
candidate=candidate+2
count=count+1
print primes
print "20th prime is ", primes[-1]
ご参考までに、素数として 2 をテストしていないため (私は 3 から始めています)、count は 1 として初期化され、candidate
奇数のみが素数になる可能性があるため 2 ずつインクリメントされます。素数定理など、この問題を解決する他の方法があることは知っていますが、このアプローチの何が問題なのか知りたいです。また、考えている最適化があれば、提案してください。
ありがとうございました