違法素数を作ってみる

下記参考リンクにもあるアロワナさんのpythonコードを使って違法素数ファイルを作ってみた。

ファイルは元号使用数ランキングで使ったxlsxファイルを使った。

ファイル名だけはgengou.xlsxにしたが、それ以外は同じだ。

raw.binに変換できない。sedが、悪さをしているようだ。
こうなったら力技だ。sedを使わず書きだして、Excelで強引に右側を消した。
その後、空白部分がTabになっていたので、それを置換で埋めた。

エンコードできない。どうやら、数列として扱ってくれないようだ。
Pythonは、Javaのように関数の型にうるさいわけではない。なぜだろうか。

よくファイルを見返したら、「.」が一個だけ残っていた。消した。

表示されない。Python4300桁問題のようだ。
コマンドプロンプトで「set PYTHONINTMAXSTRDIGITS=0」と打ち込むことで回避した。
次に生じた問題はTerapad8000文字問題だ。普段よりTerapadを愛用している私にとっては死活問題だ。
メモ帳なら開けた。100780列とのことだ。
サクラエディタならコピペできた。

calc.pyを読み込んだら、固まった。これだけの大きい数だ、無理難題なのだろう。
試しにbの値をprintするようにしたが、5で固まった。

wolframくんも機能しないし、WinPFGWも稼働しない。見切れている。
手動でやろうにも、こんな大きい数、256を掛けるだけでも一苦労だ。

cmdで直接掛けてもらおうと思ったが、無理そうだ。

pythonコードで無理やり計算させることはできた。

一回復号させてみたら、ファイル名が違ったようだ。

もう一度sedに挑戦した。
シングルクオーテーションをダブルクォーテーションにしたら、全部消失したものの動きはした。

「xxd -b test.c.gz | cut -d: -f 2 | sed 's/[^01]//; s/ //g' > raw.bin」にしたら、ゴミは残るもののある程度はうまく消えた。
しかし、うまくencodeができない。

「xxd -b test.c.gz | cut -d: -f 2 | sed "s/ (空白2回).*//; s/ //g" > raw.bin」で、うまく行った。
htmlの都合上、空白を2個連続は無理なためだ。

これでやっとできたファイルが、これだ。

(続く)

ホームに戻る