数学上の大発見?
夢の話である。
とある人と仕事の打ち合わせをしている。マイコンのファームウェアについて、その相手の方と確認をしていた。
「それで、結局はどのマイコンでも大丈夫ってことですか?」
「いや、どのマイコンでも、と言われても...」
「あぁ、では、Cで書くものであれば何でも?」
「いや、Cはいいのですが、マイコンによっては指数と素数の変換をしなければいけないので...」
「指数と素数の変換...?」
<指数と素数の変換>などと言う要素は筆者は不勉強で知らなかったので、ついオウム返しをしてしまう。ふと相手の顔を見ると「そんなことも知らないのか」と、少し小馬鹿にされたというか、不安げな表情をしていることに気づいたので、こんな問いを発してみた。
「じゃぁ、49の場合は?」
無論、指数を素数に変換する実例を聞いてみて、その変換の法則を探ろうとしたのである。彼は「ちょっと待って、今計算する」と言うや否や、こう答えた。
「25」
「じゃぁ、121は?」
と聞いたところで目が覚めてしまった。
起きてからしばし夢のことを考えてみる。指数と素数の変換などは恥ずかしながら筆者には初耳であることに変わりはないのであるが、その変換について考えてみた。
夢の中で「49」は7の2乗のことであって(そういう前提で出題している)、それに対する答えは「25」であった。つまり
49(7 ^ 2) -> 7 = 2 + 5
を意味している。そして同じく夢の中で「121」は11の2乗のことで、想定された答えは「1235」であった。すなわち
121(11 ^ 2) -> 11 = 1 + 2 + 3 + 5
夢から覚めたところで、筆者は夢の中で数学上の大発見をしてしまったことに気づいた。とりあえずこれを<勅使河原の予想>と命名しておこう。
勅使河原の予想
(重ならないとは、和の要素に同じ素数が繰り返されないことを意味し、和の要素には1を含むことができる)
13 = 1 + 2 + 3 + 7
17 = 1 + 3 + 11
19 = 2 + 17
23 = 1 + 2 + 3 + 17
うん、いけそうである(例が少なすぎるが、一番大きい素数をまずは充ててしまえば、後は何とかなりそうな感じがする)。
ところで、こんな法則は既に存在するのか?「素数の和」でぐぐったところ、Wikipediaで「ゴールドバッハの法則」なるものを発見した。
ゴールドバッハの予想(以下、Wikipediaより引用)
全ての 2 よりも大きな偶数は2つの素数の和として表すことができる
弱いゴールドバッハの予想(以下、Wikipediaより引用)
いずれの予想も、同じ素数を繰り返されることが許容される点が、勅使河原の予想とは異なる。
などと妄想してみたが、筆者が知らないだけで、素数とはそもそもそういうものを言うのかもしれない(筆者は単に、素数とは1と自身以外の自然数で割り切れない2以上の自然数を指す、としか理解していないので)。
まぁ、高校時代に数学は筆者の赤点の常連だったので、大きなことは言えないのであるが、<勅使河原の予想>が仮に正しいとすると、夢の中でそんなことを暗黙的に思いついたことについては、素晴らしい才能であると自賛しておきたい。
尤も、元々の目的である<指数から素数の変換>なるものは、既に 11 の時点で破綻していたのである。
指数 121(11 ^ 1) の素数への変換
121 (11 ^ 2) -> 11 = 1 + 2 + 3 + 5
121 (11 ^ 2) -> 11 = 1 + 3 + 7
同じ 121 という入力に対して素数への変換出力が2通り存在している。とあるマイコンから他のマイコンへ移植する際に、変換アルゴリズムによって移植後のコードが変わってしまうのであるから、この変換は実現(実用)し得ない。あぁ、残念...
まぁ、所詮は筆者の夢物語であった所以である。