原始疑似完全数の式のお話
クライマキナというゲームには5桁のアドレスを入力することで入れるエリアがある。
メインストーリーとは関係ないため、クリア後に行う事になった。
入力アドレスはそれぞれ規則性があり総当たりする必要はない。
今回はそのうちの一つの条件にあった原始疑似完全数のお話です。
ちなみに今から書くことはアドレス解析ページ(クライマキナ完全アドレス一覧)で既に書いたことなので目新しい内容は無いです。
約数とは?
約数とは? ある整数を割り切ることができる(割った余りが0になる)整数のことです。 例えば「6」なら, 1, 2, 3, 6 で割り切れるので, これらが約数です。
完全数とは?
完全数は「その数自身を除く約数をすべて足すと、元の数と等しくなる数」です。
完全数6の場合
「6÷1、6÷2、6÷3、6÷6」これら全て余りが0。つまりこれらが約数。
約数=「1, 2, 3, 6」正し自身の数を含めないので利用数約数は「1, 2, 3」です。
この出てきた数を全て足すと「1+2+3=6」となります。
この様に数値の約数を全て足すと元の数字になるものを完全数と言います。
| 数 | 約数 | 和 | 結果 |
|---|---|---|---|
| 6 | 1, 2, 3 | 1 + 2 + 3 = 6 | 完全数 |
| 28 | 1, 2, 4, 7, 14 | 1 + 2 + 4 + 7 + 14 = 28 | 完全数 |
| 496 | 1, 2, 4, 8, 16, 31, 62, 124, 248 | 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496 | 完全数 |
疑似完全数とは?
次に、疑似完全数についてです。 完全数の条件を少しだけ「ゆるく」したのがこれです。
完全数は、自分以外の約数を「全部」足さなければなりませんでした。対して疑似完全数は、「自分以外の約数の中から、いくつか(一部でも全部でも可)を選んで足したとき、元の数と等しくなる数」を指します。
12
12の約数:1, 2, 3, 4, 6, 12
自分以外を全部足すと 1+2+3+4+6 = 16 となり、12を超えてしまいます。
しかし、ここから 2, 4, 6 だけを選んで足すと、合計は 12 になります。
このように「約数から好きな数字を選んで足し算して元の数が再現できる」のが疑似完全数です。
原始疑似完全数とは?
本題前の本題です(混乱)。
疑似完全数の中には、少し「ズルい」やつがいます。例えば「6」が完全数(=疑似完全数)だと分かれば、その倍数の「12」や「18」も、約数の中に「6を作るセット」を自動的に持ってしまうため、当然のように疑似完全数になります。
これでは面白くない、ということで定義されたのが原始疑似完全数です。
原始疑似完全数とは、「疑似完全数であり、かつ、その約数の中に疑似完全数を一つも持たない数」のことです。
つまり、「他の疑似完全数の力を借りずに、自力で初めて疑似完全数になった最小単位の数」と言い換えられます。
- 6 は原始疑似完全数です(約数 1, 2, 3 の中に疑似完全数がないから)。
- 20 も原始疑似完全数です(約数 1, 2, 4, 5, 10 の中に、一部を足して自分になる数は 20 以外にありません)。
- 12 は疑似完全数ですが、原始ではありません。なぜなら、約数の中に 6(疑似完全数)が含まれているからです。
n∈PPS⇔n pseudoperfect ∧∀d|n (1<d<n⇒d∉PP)
さて、完全な本題である原始疑似完全数の数式です。これが既に読める人はここで解散してください。今回はこれを説明するために記事を作っただけです。
まぁ一般人がゲームやる為にこんな記号見せられても分かるはずもないだろうというのが正直なところだと思います。順番に行きましょう。
n∈PPS⇔
・「n」は指定した数字
・「∈」は同じって事です。正確にはそれに含まれるという意味。
・「PPS」は原始疑似完全数
つまりnが原始疑似完全数に含まれる。という説明です。まぁ言葉で読む分には「n=原始疑似完全数」こういう事です。
・「⇔」これの左右が同じ事を表します。
つまり「n=原始疑似完全数」⇔(原始疑似完全数の条件)
nが原始疑似完全数になる条件は=「n pseudoperfect ∧∀d|n (1<d<n⇒d∉PP)」
こういう事です。という事は「⇔」の右側が読み解ければ原始疑似完全数が何なのかわかるって事です。
n∈PPS⇔n pseudoperfect∧
・「n pseudoperfect」はnとして使う値は疑似完全数
つまり「原始疑似完全数=疑似完全数」
これは事前に説明してる通り、疑似完全数というカテゴリの中に原始疑似完全数が存在する為です。
・「∧」はandです。なおかつって事ですね。
原始疑似完全数=nが疑似完全数かつ(原始疑似完全数の条件)
これによって確認すべき条件がより右にスライドしました。
∀d|n (1<d<n⇒d∉PP)
やっと事実上の条件の肝となる部分に到達しました。
・「∀」はforAll、全てのという意味
・「d|n」はdでnを割り切る=「n÷dの余りが0」
・「∀d|n」
こうなった場合はnに総当たりで1~nの間で割り算するって事ですね。条件が割り切る=余りが0になる=約数が取得出来るという事です。
nを割り切れた値が全て=約数群d
約数一覧がGET出来たので約数が何だったら原始疑似完全数なのかという話になります。という事は
原始疑似完全数=nが疑似完全数かつnの約数が…(原始疑似完全数の条件)
ここまで来ました。
∀d|n (1<d<n
この先の条件はただの不等号です。
・「1<d<n」dが1より大きく、nより小さい
「1<d」なのは約数1はどの数値であっても割り切れるため条件から除外される。
「d<n」は自分より小さいものだけを対象とする
これを全てのdに対して行うで
1を除外し、自身も含めない。
(1<d<n⇒d∉PP)
・「⇒」もしそうだったら
・「d∉PP」d∉PP. dが疑似完全数ではない。
つまり「約数群全てが過去に出た疑似完全数を含むことがない」って事ですね