Pythonでハーシャッド(Harshad)数を簡単に実装してみる

スポンサーリンク

今日はHarshad Numberについて学びましょう。

数とは何かを理解した上で、ある数がHarshad Numberであるかどうかをチェックするプログラムを実装していきます。

スポンサーリンク

ハーシャードナンバーとは?

元の数字がその桁の和で割り切れる場合、その数字はハーシャド数です。

ハーシャド数とは、「abcdは(a+b+c+d)で割り切れる」という定義です。

お勧めの記事 Pythonでアームストロング数を確認する方法は?

Harshad Number の例

例1:155

桁の和=1+5+5=11

しかし、155は11で割り切れない。

したがって、この数はハーシャド数ではない。

例2:156

桁の和=1+5+6=12

しかし、156は12で割り切れる。

したがって、この数はハーシャド数です。

Harshad数をチェックするアルゴリズム

ある数字がHarshad数であるかどうかをチェックするためのすべてのステップは、次のとおりです。

  1. 入力された数字を読み取る
    1. 後で結果を確認するために、数値のコピーを作成します。
  2. 結果変数を作成(0に設定)
  3. 4.数字を一桁ずつたどるwhileループを作成します。
  4. 反復毎にresultを一桁ずつ増加させる
    1. コピーした数字を得られた結果で割る。
    1. 完全に割り切れるなら、その数字はハーシャド数であり、そうでないなら、それはハーシャド数ではありません。

Harshad Number の擬似コード

以下のコードは、ある数字が Harshad Number であるかどうかをチェックする擬似コードです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
READ n
MAKE A COPY OF n
result=0
CHECK DIGIT BY DIGIT:
  WHILE n!=0
     GET CURRENT DIGIT : digit = n % 10
     UPDATE RESULT : result = result + digit
     TRIM THE LAST DIGIT : n = n / 10
  ENDWHILE
 
CHECK FOR HARSHAD NUMBER:
   IF COPY OF n % result == 0
      PRINT "HARSHAD NUMBER"
   ELSE
      PRINT "NOT A HARSHAD NUMBER"

Python で Harshad 数をチェックするコード

Harshad Numberとは何か、それを実装する手順がわかったところで、Harshadチェックを一行ずつ実装していきましょう。

内部変数の作成

まず、入力 n を受け取り、元の数値をいくら変更しても大丈夫なように、入力のコピーを保存します。

また、結果を 0 で初期化します。

そのためのコードを以下に示す。

1
2
3
4
n = input()
n=int(n)
copy_n=n
result = 0

番号のトラバースと結果の更新

各桁にアクセスするために、数値の modulus ( mod 10 ) を取って数値の最後の桁を抽出します。

次のステップでは、前の結果と現在の桁の和として結果を更新します。

最後のステップは、数字を10で割って最後の一桁を削除することです。

同じ処理を、数字がなくなるまで繰り返す。

以下はそのコードです。

1
2
3
4
while(n!=0):
    digit = n%10
    result=result + digit
    n=int(n/10)

ハーシャードナンバーであるかどうかのチェック

最後に、先ほど作成した数のコピーが、計算した結果で割り切れるかどうかをチェックします。

そのためのコードを以下に示します。

1
2
3
4
if(copy_n % result == 0):
    print("Harshad Number!")
else:
    print("Not an Harshad Number!")

コードの出力サンプル

とりあえず、2つの入力に対してプログラムをテストしてみました。

両方の出力は以下の通りです。

番号1:156

156
Harshad Number!

番号 2: 121

121
Not a Harshad Number!

まとめ

しかし、ここで立ち止まらないでください! 読み続けて学んでください!

タイトルとURLをコピーしました