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

指定した数値がハーシャッド数(Niven数)かどうかを判定するPythonプログラム

指定された数値がハーシャッド数であるかどうかを判定するには、シンプルなwhileループと「%」演算子(剰余)、「+」演算子(加算)、そして「//」演算子(切り捨て除算)を組み合わせるだけで実現できます。

ハーシャッド数とは?

ハーシャッド数は「ニーヴェン数(Niven数)」とも呼ばれる数です。ある整数を特定の基数で表記したとき、その各桁の数字の合計で元の数が割り切れる場合、その数をハーシャッド数と呼びます。

例えば、18は 1 + 8 = 9 となり、18 ÷ 9 = 2 で割り切れるためハーシャッド数です。一方、この記事の例で使用する134は 1 + 3 + 4 = 8 ですが、134 ÷ 8 = 16.75 となり割り切れないため、ハーシャッド数ではありません。

サンプルコード

my_num = 134
remaining = sum_val = 0
print("チェック対象の数値のコピーを作成しています...")
my_num_copy = my_num;
while(my_num > 0):
    remaining = my_num % 10;
    sum_val = sum_val + remaining;
    my_num = my_num // 10;
if(my_num_copy % sum_val == 0):
    print(str(my_num_copy) + " はハーシャッド数です");
else:
    print(str(my_num_copy) + " はハーシャッド数ではありません");

出力結果

チェック対象の数値のコピーを作成しています...
134 はハーシャッド数ではありません

コードの解説

  • 判定対象となる数値を定義します。
  • 各桁の合計を格納するための変数 sum_val を0で初期化します。
  • while ループで数値が0より大きい間、% 演算子を使って最下位の桁(1の位)を取り出します。
  • 取り出した桁の値を合計に加算し、// 演算子で数値を10で切り捨て除算することで、次の桁へ処理を進めます。
  • ループ終了後、元の数値のコピーを桁の合計で割り、余りが0であればハーシャッド数と判定します。
  • 余りが0でない場合は、ハーシャッド数ではないと判定します。
  1. Pythonで数値が2の累乗かどうかを判定するプログラム

    本記事では、与えられた数値が2の累乗(べき乗)であるかどうかを判定する方法について、考え方と実装手順をわかりやすく解説します。 問題の定義 ある整数 n が与えられたとき、その数が2の累乗(1, 2, 4, 8, 16, …)であるかどうかを判定します。 アプローチ 判定には「繰り返し2で割る」というシンプルな方法を使います。考え方は以下の通りです。 入力された数値 n を、1になるまで繰り返し2で割っていきます(n = n // 2)。 割る過程で n % 2 の結果が0以外(奇数)になり、かつ n が1でない場合は、その数は2の累乗ではありません。 最終的に n がちょうど1になれば、そ

  2. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列