見出し画像

GASで素数判定

落ち着くんだ…
『素数』を数えて落ち着くんだ…
『素数』は1と自分の数でしか割ることのできない孤独な数字……

おまけ的に追加課題が出たので挑戦。
復習、予習、LT準備を放り投げて、素数で遊んでいる不良は私です。

素数判定コード

これで良いのか、どうなんだろう。

//1と2は例外的な処理として、最初にifの関門を設けておく。
//2以上の数字は、forで回して、2から自身の数まで、順に割ってみて素数がどうか判定する。
function isPrimeNumber() {
 const p = 11;
 if (p === 1) return console.log(`${p} は素数じゃないです。数学の決まりとして,1は素数ではありません。`);
 if (p === 2) return console.log(`${p} は素数です。「2」は「1より大きい整数」で「1と2以外の自然数では割り切れない」ので、素数です。`);
 for (let i = 2; i < p; i++) {
   if (p % i === 0) return console.log(`${p} は素数じゃないです。1と自分の数以外で割り切れたみたいです。最初に割り切れた数は${i}でした。`);
 }
 return console.log(`${p} は素数です。『素数』は1と自分の数でしか割ることのできない孤独な数字。`);
}

上記のコードを実行するとこんな感じになる。

画像1

1と2は例外的な処理として、最初にifの関門を設けておく。
2以上の数字は、forで回して、2から自身の数まで、順に割ってみて素数がどうか判定する。

うーん、なんかもっといいコードがありそうな気が......。

あなたなら、どんなコードを書きますか?

このコードの問題点は、おそらく、膨大な数、桁数が多くなったときに処理しきれないだろうな、ということ。GASには、通称6分の壁がある。

まあ、そんな膨大な数の計算は専門のパソコンなりソフトなりでやったほうがいいのかわからないけど。
いま流行りのマテリアルズインフォマティクスというのも、例えば原子分子の膨大な組み合わせを計算するというような、そこにPythonが使われたりなんだりしてるのかな、知らんけど。

試しに、このコードに適当に大きめの数字を入れてみたら、面白いことになった。

画像2

実行開始と実行完了の間、時間が巻き戻っている???
また、ログが指数表示になっている。


画像3

↑このぐらいの桁数になるど、ぐるぐるして処理されないようだった。

画像4

↑適当に桁数を減らした。時の巻き戻りは解消されたようだ。

どこまで実行完了できるのか、やってみよう。

画像5

↑ 1.2345678901234567e+308 ここまでいけた。実行ログの時間表示はまともになった。このconstの最後に数字を足すと、ぐるぐるして処理が完了しないようだ。試しに6分待ったが、完了しなかった。

画像6


得られた結果(仮)

筆者の通信環境、マシンスペックによるが、下記の通り。
Google側で処理してるから、マシンスペックはあんま関係ないと思うんだけどなあ。

・実行ログの時間表示において、時の巻き戻りが発生。
・ログが指数表示になる。
・1.2345678901234567e+308 までは処理できるっぽい。
・Googleさんに怒られるんじゃないかとどきどきした。

エラトステネスの篩(ふるい)

エラトステネスの篩(ふるい) はよく分からなかった。
5までは、システマティックに線を引けばいいけど、7から急にビンゴ大会になる。

双子素数

双子素数まで考え出すとさらによく分からない。


素数たちの孤独

素数たちの孤独、という本を昔読んだことがあった。
双子素数という言葉を覚えたのはこの本の影響だった。
内容的には村上春樹やマチネの終わりにが好きな人は好きな雰囲気の話なんじゃないかな。


そういえば数学に関連した本や映画、漫画はいくつか読んだりした。

文理(そもそも文系理系という区分に疑問があるが)で進路選択といった世界線とは無縁で生きてきたので、なにかこう、数学的なものに対して憧れや尊敬があるのかもしれない。普通高校に進学して、受験勉強をしていたら、今とは違う人生だったのかもしれない。もしかしたら、あったかもしれない未来について、たらればするのは何なんだろうね。


数字であそぼ

吉田大学理学部(架空だが、あきらかに京大がモデルだよねこれ)で、てんやわんやする話。奇人変人に囲まれ懊悩する真面目系主人公。


はじめアルゴリズム

天才系の話。


遥かなるケンブリッジ―一数学者のイギリス

数学者 藤原 正彦のエッセイ。ケンブリッジの学長は公爵なので、実質副学長がトップ、そしてその副学長のスピーチの話が良かった。


イミテーション・ゲーム/エニグマと天才数学者の秘密

長谷川博己とベネディクト・カンバーバッチは私の中で同類。


ビューティフル・マインド

ルームメイトとの話、窓際の机、精神疾患の描き方がうまい。



ドリーム

女性スタッフの奮闘。日本でも古い理工学系の大学施設には女子トイレが無かったりしたが、現代はさすがに改善されてるよね?


ご冗談でしょう、ファインマンさん

これは読みたいと思ってまだ読めてない。


他にもおすすめがあったら教えてください!





いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!