パイザ問題集のグロタンディーク変数の問題を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" ; } |
とりあえず力技のループ処理で解いたが、素数を求める効率的なアルゴリズムは無数にあるので、そのへんを今後学んで行きたい。
コメント