こんにちは、のっくんです。
今日はPythonで素数を判別するコードを書いていきたいと思います。
素数とは、1と自分以外でしか割り切れない自然数です。1は含みません。
例えば、
- 3は、1と3でしか割り切れませんので、素数です。
- 4は、1と2と4で割り切れます。2で割り切れるので、素数ではありません。
与えられた数値に対して、1と自分以外の数値を列挙してその数値で割り切れるかどうかチェックすれば判定できます。
数値の列挙には、range関数を使ってみます。
def prime_check(num): for i in range(2, num): if num % i == 0: return False return True
rangeの範囲は、2~(自分自身-1)までの範囲です。
1と自分自身で割り切れるのは当たり前なので、判定には使いません。
一度でも割り切れれば、Flase、
一度も割り切れなかったら、Trueを返します。
コードとしてはこれだけですが、これを使ってもう少し高度な問題を解いてみましょう。
例えば、以下の問題。
1〜50の範囲にある素数を全て求めよ。
これも同様にrangeを使って50までの自然数を列挙し、先ほど作った関数でチェックすれば計算できます。
max_num = 50 for x in range(2, max_num): if prime_check(x): print("prime is ", x)
1は調べるまでもなく素数でないので、飛ばして2から始めています。
if文で、`prime_check`がTrueの時だけ、数値をプリントします。
prime is 2 prime is 3 prime is 5 prime is 7 prime is 11 prime is 13 prime is 17 prime is 19 prime is 23 prime is 29 prime is 31 prime is 37 prime is 41 prime is 43 prime is 47
こんな感じ!
おわり。