Python
 Computer >> コンピューター >  >> プログラミング >> Python

指定した数値がハッピー数かどうかを判定するPythonプログラム

特定の数値がハッピー数(Happy Number)であるかどうかを判定するには、「%」演算子(剰余)、「//」演算子(整数除算)、そして「+」演算子を組み合わせて使用します。

ハッピー数とは、各桁の数字を2乗して合計し、その結果に対して同じ操作を繰り返したとき、最終的に1に到達する数値のことです。1に到達しない数値は、4と5などの循環に入り込み、永遠に1になることはありません。

以下に具体的な実装例を示します。

サンプルコード

def check_happy_num(my_num):
    remaining = sum_val = 0
    while(my_num > 0):
        remaining = my_num%10
        sum_val = sum_val + (remaining*remaining)
        my_num = my_num//10
    return sum_val;
my_num = 86
my_result = my_num
while(my_result != 1 and my_result != 4):
    my_result = check_happy_num(my_result);
print("The number is being checked")
if(my_result == 1):
    print(str(my_num) + " is a happy number");
elif(my_result == 4):
    print(str(my_num) + " isn't a happy number");

実行結果

The number is being checked
86 is a happy number

コードの解説

  • check_happy_num という名前の関数を定義し、数値を引数として受け取ります。
  • whileループ内で、数値が0より大きいかどうかを確認します。
  • 合計値を格納する変数 sum_val を0で初期化します。
  • 「%」演算子を使って数値を10で割った余り(最下位の桁)を取得し、変数に代入します。
  • 取得した桁の数字を自分自身で掛け合わせて2乗し、合計変数に加算します。
  • 「//」演算子で10による整数除算を行い、処理済みの桁を取り除きます。
  • この処理を数値のすべての桁に対して繰り返し、計算された合計値を戻り値として返します。
  • 判定対象となる数値を定義し、そのコピーを作成して元の値を保持します。
  • 結果が1または4になるまで、先ほど定義した関数を繰り返し呼び出します。1はハッピー数であることを示し、4は非ハッピー数の循環に入ったことを意味します。
  • 判定結果に応じたメッセージをコンソールに表示します。

このように、剰余演算と整数除算を組み合わせることで、各桁の数字を簡単に取り出すことができ、ハッピー数の判定を効率的に実装できます。

  1. Pythonで与えられた数値がフィボナッチ数かどうかを判定する方法

    本記事では、与えられた数値がフィボナッチ数であるかどうかを判定する問題の解決策について解説します。 問題の定義 ある数値 n が与えられたとき、その数値がフィボナッチ数であるかどうかを判定します。 第 n 項のフィボナッチ数は、直前の2つのフィボナッチ数の和として定義されることは広く知られています。しかし、フィボナッチ数列には漸化式以外にも興味深い数学的性質があります。 フィボナッチ数の判定条件 ある数値 n がフィボナッチ数であるのは、「5×n² + 4」または「5×n² − 4」のいずれかが完全平方数であるとき、かつそのときに限る この性質を利用すれば、フィボナッチ数列を実際に生成しなくて

  2. 【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説

    本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が