コンテンツにスキップ

008: 夜の金網をくぐり抜け

ヒント / 解答

難易度:

問題

関数 primes_up_to(n) を書いてください。 この関数は、n 以下の素数を小さい順に並べたリストを返します。

素数は、2以上の整数で、1と自分自身以外に正の約数を持たない数です。 この問題では、エラトステネスの篩を使ってください。

制約

  • n は0以上の整数です。
  • 戻り値は整数のリストです。
  • 2未満の整数は素数ではありません。
  • 素数は小さい順に返します。

>>> primes_up_to(1)
[]
>>> primes_up_to(2)
[2]
>>> primes_up_to(30)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
>>> primes_up_to(100)[-2:]
[89, 97]

確認

次のRSA暗号の問題で使う 5361 が、100以下の素数に含まれることを確認してください。

>>> primes = primes_up_to(100)
>>> 53 in primes and 61 in primes
True