数秘術に基づくあの年の運勢


数秘術を元にある年の運勢を占うプログラムを作りました。

診断のページ

パーソナルイヤーの計算方法

パーソナルイヤーは年月日のすべての桁の数を足して、1桁になるまで同じように足して得られる結果です。

たとえば の場合は 1 + 9 + 8 + 6 + 1 + 2 + 8 = 35 、 3 + 5 = 8 というように計算します。

パーソナルイヤーを計算するプログラム

年月日を上述のように足してもいいのですが、 ループを使って足し算のアルゴリズムを書くよりも、割ったほうが楽にできます。 1986年10月28日 の場合は、 1986 % 9 + 1 % 9 + 28 % 91986128 % 9 で計算できます。

仕組み

任意の正の整数について、すべての桁の数を足した数を求めます。 求められた数について同じ作業をします(すべての桁の数を足した数を求める)。 これを、1桁の数が得られるまで繰り返したときの値は、元の整数が9で割り切れる場合は9に等しく、そうでない場合は元の整数を9で割った余りに等しくなります。

そのため、上のように9で割ってもほしい答えが得られるようになっています。

証明

証明すべきことは次の3つです。

  • 有限回の作業で1桁の正整数にできる
  • 得られた1桁の正整数と元の数をそれぞれ9で割った余りは等しい
  • 9で割った余りと足して得られた1桁の数は等しい(余りが 0 の場合は 9 が得られる)

すべての桁の数を足す作業を “作業\(P\)” と表すことにします。

任意の \( 0 \) 以上の \(n\) 桁整数 \( A \) を次のように表します。

\[ A = \sum _{k=0} ^{n} 10^k a_k \; (0 \leq a_k < 10, a_k \in \mathbb{N}) \]

(1) 2桁以上の正の整数のすべての桁を足すと、計算前の数字よりも小さくなる

操作\(P\)を行ったときに、大きな数ができると作業が永遠に終わりませんから、 操作を行うことで小さな数が得られることを確認します。

\( n \geq 2 \) のとき、

\[ A – \sum _{k=0} ^{n} a_k = \sum _{k=0} ^{n} (10^k – 1) a_k > 0 .\]

(2) 任意のn桁の正整数のすべての桁を足すと必ず正の数になる

操作\(P\)によって0以下の数ができると割り算が厄介です。 そうならないことを確認しておきます。

\(a_n > 0\) により、

\[ \sum _{k=0} ^{n} a_k \gt 0 .\]

以上より、任意の正の整数は、作業\(P\)を有限回繰り返すことで1桁の整数にすることができます。

(3) 任意の0以上の整数を9で割った余りは、すべての桁の数を足して9で割った余りに等しい。

\[ A \equiv \sum _{k=0} ^{n} 1^k a_k \equiv \sum _{k=0} ^{n} a_k \ \left( \bmod 9 \right) \]

となるので、\(A\) を \( 9 \) で割った余りは すべての桁の数を足して9で割った余りに等しくなります。

この法則は九去法でも使われています。 九去法は検算の方法

(3) を有限回適用することで、 任意の0以上の整数を9で割った余りが、作業\(P\)を繰り返してできた1桁の正整数を9で割った余りに等しいことがわかります。

1桁の数について、9で割った余りが 0, 1, 2, 3, 4, 5, 6, 7, 8 になる場合、 割られる1桁の数は 9, 1, 2, 3, 4, 5, 6, 7, 8 です((3)により0になることはない)。 よって、任意の正の整数について、作業\(P\)を、1桁の数が得られるまで繰り返したとき、その1桁の数は元の整数が9で割り切れる場合は9に等しく、そうでない場合は元の整数を9で割った余りに等しくなります。