2018-04-22

鈴木貫太郎



今、すごい勢いで数学の動画を投稿されている鈴木貫太郎氏。

この動画の最後に巨大素数について触れています。昨年末に人類が知っている最大の素数が更新されて、その桁数が2300万桁との説明でした。

拙者とて数学専攻の端くれ。それがメルセンヌ素数だいうことはぴんときました。ぐぐってみると確かに昨年末50番目(暫定)のメルセンヌ素数が発見されていました。

新たなメルセンヌ素数は、「277232917-1」だということです。

(参考記事)
「最大のメルセンヌ素数が2年ぶりに更新されました-50個目の完全数及びメルセンヌ素数の発見」
https://www.huffingtonpost.jp/nissei-kisokenkyujyo/mersenne-number_a_23375041/


2の7千7百23万2917乗マイナス1

鈴木さんも言っているように筆算で計算するには人生は短かすぎるwので、これをノートPCで計算させてみました。


77232917の部分を計算するには、bashの画面で(えっ)

echo 2^77232917 | bc

とコマンドを入力します。この普段動画を見たりしているノートPCは2007年ごろ買った物でCPU はCore 2 Duo という何世代も前のINTEL CPUですが、2~3時間で答えが出ました。

でましたが、上のコマンドのままだと画面に表示されて後半の部分だけしか確認できませんので、改めて

echo 2^77232917 | bc > mersenn.txt

として答えをファイルに書き出しました。

先頭の部分を表示させるにはheadコマンドを使います。

head mersenn.txt
46733318335923109998833558556111552125132110281771449579858233859356\
79234805211772074843110997402088496213680900380493172483674425135191\
44365249220286787499224923639633038619305951170770522850356011779638\
64405095412827410954851974327355101432575324997699380819164104077499\
06070270851317808544314827192879270515747600591825011224264939011775\
24147020112211388180246357120385256971031180861489618892584067750976\
81495456790744215925392808604345151310705231857280062253517330504393\
15450492769468962852688696749443421129857922337323378017542414218271\
74125670264416644353313890442672256181107628062641550510992384203991\
22553785704922586745047819985018698518839571996300803871796590694369\





最後のほうはtailコマンドで

tail mersenn.txt
37661358198679814055930917181633755650562105455347917250002839197671\
17364673889470217432933170392628364771048338555139333997926397499874\
41784256066012661190061743720613117363273631295221334772163209679197\
87747344061576281630959712931082289544036829450459700591006787778744\
63126263665715087912465383132346587851561907804169134528322842427416\
85284680531075011154992190488470404689117644501312771871778147766917\
52405616898977508491948935827722915194765489834150174826207794700798\
09612554475249154980613036601062463902853760045187860554022233766729\
25679282131965467343395945397370476369279894627999939614659217371136\
582730618069762179072

bcコマンドは既定値では70桁ごとに折り返しのマーク「\」を挿入する仕様になっているのでwcコマンドで文字数を数えても答えの桁数より多くなってしまいますが一応以下のような文字数でした。

wc mersenn.txt
  341904   341904 23933232 mersenn.txt

まあ大体2300万桁はあることは確認できました。

桁数だけだったら高校で対数を習っていたら
77232917 × log(2) の小数部分切り上げで計算できることはご存じでしょう。

手元の電卓アプリで計算してみると
23,249,425 桁と出ましたが合ってるかな?

2018/5/7 追記
\と改行を削除して、実際の桁数を数えるコマンド
cat mersenn.txt | tr -d '\\|\n' | wc -c
23249425

logの計算とピッタリ一致しました!

※「\」は日本語環境では「¥」と表示されます。ブログにアップしたら「\」に変換されました。

0 件のコメント: