ハーシャッド数とは何か?基本から詳しく解説して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*}\]
\[ \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. 例
- 18:
- 各桁の和: \(1 + 8 = 9\)
- 18は9で割り切れる → 18はハーシャッド数
- 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