よろずメモ 学び 稼ぎ 趣味 YOROZUMEMO

素因数分解ツールをPHPで作成してみた

素因数分解するツールをPHPで作成してみたいと思います。

勉強がてら作成してみましたが、誰かの学習の役に立てばと思います。

素因数分解とは

自然数を素数の積になるまで分解することです。

たとえば、27の場合は「3×3×3」で構成されていますので、「3,3,3」が素因数となります。

PHPで作成

素因数分解をPHPで作成してみました。

※バリデーションを入れたり、もう少し良い書き方ができると思います。

<?php


if(isset($_POST['num'])){
    $num = $_POST['num'];
    $max = (int)floor($num / 2);

    $set_num = $num;
    $check_num = 2;
    $prime_num = '';

    while(true){
        if($num % $check_num == 0){
            $prime_num .= $check_num . ',';
            $num = $num / $check_num;
        } else {
            $check_num++;
        }
        if($num == 1){
            $prime_num = substr($prime_num, 0, -1);
            $is_sosuu = '素数ではないです';
            break;
        }
        if($check_num == $max){
            if($prime_num == ''){
                $prime_num = $num;
                $is_sosuu = '素数です';
            } else {
                $prime_num .= $check_num;
                $is_sosuu = '素数ではないです';
            }
            break;
        }
    }

    echo '判定数字:' . $set_num . "\n";
    echo '素因数:' . $prime_num . "\n";
    echo $is_sosuu;
}
?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <form action="" method="post">
      <div>
        <label for="num">素因数分解する数字</label><br>
        <input name="num" type="text" />
      </div>
      <div class="button">
        <button type="submit">送信</button>
      </div>
    </form>
  </body>
</html>

動作

122,128,1487を入力してみた時の画面です。

素因数と素数かどうかを判定します。

モバイルバージョンを終了