第9話 巨大数構築

俺様は自動販売機。客が入れたコインを判別し、計算したあと指定の商品を出すのが仕事だ。しかし、たまにはエラーを出さなきゃいけないこともある。みんなが聡明でありさえしてくれれば単純な仕事なのによ。


寂れた商店街の中にその自動販売機はあった。長年その前の店で商売している爺は、店が移り変わり、そしてシャッターが増えていくその過程を、何年も何十年も見続けていた。ただ、唯一かわらないこの自動販売機をルーチンと名付け、生涯の友としていたのだ。


「おまえは見ることも話すこともできないが、お金を入れることによって反応を返してくれる。それだけは変わらない友なのじゃ…」


なんか爺が言っているが、俺様には関係ないね。

まず、Ⅰ部分にある0の数をn、II部分にある指数をm、III部分のみを見たときの自然数をxとしよう。たとえば、

(0,0,0,0,(0,1),1,0,(1))=6246383

なら、

n=4

m=(0,1)=3

x=(1,0,(1))=50

だ。そこで、

c(4,3,50)=6246383

となるような関数

c(n,m,x) を次のように定義する

sp(x,n+1)×(p(n+1))^m

spは素因数ずらしだ。積の左辺がIII部分、右辺がII部分になっている。


また、自然数xの素数指数表現のn番目の項を取り去る関数

del(x,n) を次のように定義する。

x÷(p(n)^pf(x,n))

たとえば、(((1)),0,(1),1)=2700から(((1)),0,0,1)=112にするのは、

del(2800,3)=112 とする。


そこで、xのI部分の0を数える関数を次のように定義する。

I(x)=mip(x)-1


xのII部分を取り出す関数を次のように定義する。

II(x)=(minp(x))^pf(x,mip(x))


さらに、ある自然数xからIII部分を取り出す関数

III(x) を次のように定義する。

sp( del(x,mip(x)) , -(mip(x)+1))

これは、II部分を削除したあと、素因数ずらしをして、左に寄せたものだ。


さて、具体的に巨大数をつくるための手続きを記述しよう。

手順は、

III部分を降下させる

IIIが後続順序数であったら、Iに0を付け加える

というものだ。


t(x)を一つの手順とする。

まず、xのIII部分が後続順序数である とは、

III(x)∈奇数

ということだ。


t(x) を次のように定義する。

III(x)∈奇数 ならば、

c(I(x)+x,II(x),sp(III(x),-1))


III(x)∈偶数 のときは……


俺様の能力ではこれはすこしきついな。。なにせ、俺様は自動販売機だ。10円と100円の違いはわかっても、1ドルと100円の違いはわからん。((1))と(1,1)の順序数としての大きさ比べはできん。ああ、悲しきかな自動販売機の限界よ。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

大きな素数をもとめて えのき @enoki_fugue

★で称える

この小説が面白かったら★をつけてください。おすすめレビューも書けます。

フォローしてこの作品の続きを読もう

この小説のおすすめレビューを見る

この小説のタグ