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


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

診断のページ

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

パーソナルイヤーは年月日のすべての桁の数を足して、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=nk=010kak(0ak<10,akN)

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

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

n2 のとき、

Ank=0ak=nk=0(10k1)ak>0.

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

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

an>0 により、

nk=0ak>0.

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

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

Ank=01kaknk=0ak (mod

となるので、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で割った余りに等しくなります。