Pythonで素数判定するコードを書いてみた

こんにちは、のっくんです。

今日は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

こんな感じ!

おわり。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog