9の倍数の判定法とそのPythonコード

問題

1. 自然数$n$の各桁の数字の総和が$9$で割り切れるならば, $n$は$9$の倍数であることを証明してください。

2. 上の$9$の倍数の判定法をPythonを用いて実装してください。


難易度:
合同式の定義と基本的性質の練習問題

解答

問1の証明

$n$を任意の自然数とします。 そして, $n$を十進法展開して \[n = a_k\cdot 10^k+a_{k-1}\cdot 10^{k-1} +\cdots + a_2\cdot 10^2 + a_1 \cdot 10 + a_0\] と書きます。 ここで各$a_i$は$n$の$10^i$の位の数字です。

さて, $10 \equiv 1 \pmod 9$に注目すると, 任意の自然数$i$に対して \[10^i \equiv 1 \pmod 9\] となることがわかります。 この合同式を用いて, 上の$n$の式を次のように変形します。

\begin{align*} n &= a_k\cdot 10^k+a_{k-1}\cdot 10^{k-1} +\cdots + a_2\cdot 10^2 + a_1 \cdot 10 + a_0\\ &\equiv a_k\cdot 1+a_{k-1}\cdot 1 +\cdots + a_2\cdot 1 + a_1 \cdot 1 + a_0 \pmod 9\\ &\equiv a_k+a_{k-1} +\cdots +a_2 + a_1 + a_0 \pmod 9 \end{align*}

ここで, 式の最後のところは$n$の各桁の総和になっていることに注目します。 もしこの総和が$9$で割り切れるならば, 上式から$n \equiv 0 \pmod 9$となり, $n$も$9$で割り切れることが従います。

$9$の倍数の判定法のPythonコード

テキストで作成した$n$の桁の数字のリストを出力する関数を使います。

この関数を用いて$9$の倍数の判定法を書くと次のようなPythonコードになります。

def is_multiple_of_9 (n): # nは自然数
    sum = 0 # 各桁の数字の合計をもとめる
    for i in digits_of (n):
        sum += i
    return sum % 9 == 0 # もし合計が9の倍数ならTrue, そうでないならFalse

わからないところがあったらテキストを復習しましょう。

合同式の定義と基本的性質

自分にあった問題を探しましょう。

練習問題一覧

もっと解いてみる。

次の問題