更新:2025/01/06

ハーシャッド数とは何か?基本から詳しく解説してpythonでチェック

ふゅか
ふゅか
ハーシャッド数って、何か知ってる?
はるか
はるか
んー簡単に言うと、各桁の和で割り切れる数。

1. ハーシャッド数とは

ハーシャッド数(Harshad Number)は、与えられた整数がその各桁の和で割り切れる数のことを指します。例えば、18はハーシャッド数です。なぜならば、18の各桁の和は \(1 + 8 = 9\) であり、18は9で割り切れるからです。

自然数 \( X \) を \( n \) 進法で表し、右端から \( k \) 桁目の数字を \( x_k \) とすると、以下のように表現することができます。
\[ \begin{align*} X &= x_m \cdot n^{m-1} + x_{m-1} \cdot n^{m-2} + \cdots + x_2 \cdot n + x_1 \\ & = \sum^{m}_{k=1} x_kn^{k-1} \end{align*}\]

ここで、$$X=Y\sum^{m}_{k=1} x_k$$となる自然数$Y$が存在するとき、$X$はハーシャッド数である。

1.1. ハーシャッド数の性質

  • すべての一桁の数(1〜9)はハーシャッド数です。
ふゅか
ふゅか
一桁の数は全部ハーシャッド数なんだね!

1.2. 例

  1. 18:
    • 各桁の和: \(1 + 8 = 9\)
    • 18は9で割り切れる → 18はハーシャッド数
  2. 1729:
    • 各桁の和: \(1 + 7 + 2 + 9 = 19\)
    • 1729は19で割り切れる → 1729はハーシャッド数

2. Pythonでハーシャッド数のチェック

以下のコードは、与えられた数がハーシャッド数かどうかを確認する簡単なPythonスクリプトです。

def is_harshad_number(num):
    sum_of_digits = sum(int(digit) for digit in str(num))
    return num % sum_of_digits == 0

# 例
print(is_harshad_number(18))  # True
print(is_harshad_number(1729))  # True
print(is_harshad_number(19))  # False

この関数は、数の各桁の和を計算し、その和で元の数が割り切れるかどうかを確認します。割り切れれば、その数はハーシャッド数です。

ふゅか
ふゅか
これでPythonでもチェックできるんだね!
はるか
はるか
うん、この関数を使えば簡単にハーシャッド数を見つけられる。
PR