戯言。PHPでグロタンディーク素数が素数かどうか確認する。

php 徒然草2.0

パイザ問題集のグロタンディーク変数の問題を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";
    }

とりあえず力技のループ処理で解いたが、素数を求める効率的なアルゴリズムは無数にあるので、そのへんを今後学んで行きたい。

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

タイトルとURLをコピーしました