秋にコンピューター サイエンス プログラムを開始する予定で、開始する少し前にプログラミングの腕を上げようとしています。
私は MIT OCW 6.0 の問題に取り組んでいますが、最初は 1000 番目の素数を生成することです。明らかに、私は自分のコードを生成したいので、私のロジックがどこで間違っているのか疑問に思っています。
counter = 1
primes = [2]
n = 3
while counter < 1000:
for i in range(2, n):
if n % i == 0:
break
else:
primes.append(n)
counter = counter + 1
n = n + 1
print primes
皆さんすごいので、ここですべての行を説明することはしませんが、私のロジックの要点は、このループを n から開始することです。n が素数の場合、リストに追加し、カウンターに 1 を追加します。そうでない場合は、次の数に進みます。最後に、1000 番目の素数で終わるリストを出力します。
ほら、これが「ブルートフォース」であることは知っていますし、そこにはふるいがあり、より複雑なロジックがあることも知っていますが、私はこれがこのように機能することを望んでいます. 現在、多くの数字が繰り返されており、1000番目の素数にはほど遠い.
みんなありがとう。これは私の最初の質問ですが、今後も出てくると確信しています。