見出し画像

pythonでコラッツ予想を確かめられるプログラムを作ろう

皆さんはコラッツ予想というものをご存じでしょうか?これは数学の未解決問題の一つですが、法則性や予想の内容はいたって単純で小学生でもわかる内容です。今回はその予想の内容を実行してくれるプログラムを作ります。


コラッツ予想とは

まずはコラッツ予想がどのような物かを簡単に理解しておきましょう。予想の内容を簡単に説明すると下のようになります。

$$
任意の自然数nについて、次のような作業をする。\\
・nが偶数の場合、2で割る\\
・nが奇数の場合、3を掛けて1を足す
この動作を繰り返すと、nは必ず1になる。
$$

予想の内容はいたって単純ですが、これが証明できないのにはいろいろと要因があります。ここでは省略しますが、その理由の一つは数学的帰納法が使えないことだったりします。

プログラムの組み方の方針

今回のプログラムは単純で、コラッツ予想の作業を1になるまで繰り返すだけです。そして入力部分をつけ足せば完成なので、結構短めのものになります。

プログラムコード

print(" n(自然数) と入力することでコラッツ予想の途中計算一覧を表示できます。")
def n(number):
    try:
        m = int(number)
        if m < 1:
            error
    except:
        print("自然数以外が入力されました。入力しなおしてください。")
        return
    n = 0
    print(m)
    while m != 1:
        if m % 2 == 0:
            m = m / 2
        else:
            m = 3 * m + 1
        n += 1
        print(int(m))
    print("%s回操作をし、1に収束しました。" % n)

特に詳しい説明は必要ないと思います。最後に出力部分で何回操作をしたかを出力したりと少しだけ工夫はしていますが、あまり変なことはしていません。ぜひ使ってみてください!(ちなみに使い道はほぼないです)

この記事が気に入ったらサポートをしてみませんか?