素因数分解するツールを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を入力してみた時の画面です。
素因数と素数かどうかを判定します。