パイザ問題集のグロタンディーク変数の問題をPHPで解いてみた。
グロタンディークという数学者が適当な素数として「57」を例に挙げたらしい。
…ところが、57は素数ではなかったらしい。不名誉にもそれが歴史に残った。
本当に素数じゃないのか調べてみたところ、結果的には3と19で割り切れることがわかりました。
$s = 57; // 2以上でないなら素数ではない if($s < 2){ echo "NO"; exit(1); } $count = 0; $list = []; // 1~$S以下の数字で割って、あまりが出る数を$countに求める。 for($i = 1; $i < $s; $i++){ $a = $s % $i; if($a === 0) { $count++; $list[] = $i; } } // 割り切れた数は? => 1, 3, 19 // var_dump($list); // exit(1); if($count == 1){ echo "YES"; }else{ echo "NO"; }
とりあえず力技のループ処理で解いたが、素数を求める効率的なアルゴリズムは無数にあるので、そのへんを今後学んで行きたい。
コメント