グロタンディーク素数、または"57"についての話です。
きっかけは、paizaラーニングのレベルアップ問題集「素数メニュー」からの出題でした。
paiza.jp
57は自然数、また整数において、56の次で58の前の数であり、半素数だけれど、素数ではありません。
グロタンディーク素数とは、Wikipediaによれば...
>自然数57は「グロタンディーク素数」と呼ばれる。
>もちろん57は素数ではないが(3 × 19 = 57)、これはグロタンディークが素数に関する一般論について講演をした際に、具体的な素数を用いて例を挙げることを求められたとき、彼が誤って57を選んだことに由来する。
>このエピソードは、彼の思考が最初から抽象的で、具体例で考察せずに一般論を構築していたことを示すものだという数学者(D. Mumford)もいる。
だから、数学的な冗談、またはケアレスミスといったことなのでしょう。
それから、"57"に関連すると言えば...
・年始から数えて57日目は、2月26日。
・原子番号 57 の元素はランタン (La)。
・ギザの大ピラミッドの底面の正方形は東西南北に対して 57 × 10−3 度(3cm)ずれている。
などなど...
そして、paizaラーニングの『グロタンディーク素数』問題では、「グロタンディーク素数、つまり"57"が本当に素数であるかを判定する」という出題でした。
僕が作成、提出したコードは、以下のとおりです。
・グロタンディーク素数
/* C++による「素数メニュー」問題集 グロタンディーク素数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n=57; int cnt=0; for(int i=2;i<n;i++){ if(n%i==0){ cnt++; } } if(cnt==0){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } return 0; }
これから"57"という数を見たら、きっとグロタンディーク素数とかランタンを思い出しちゃいそうです。
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。