PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

【PHP】数値が素数かどうかを判定するプログラムの書き方

PHPを使って、ある数値が素数(prime number)かどうかを判定する方法を解説します。素数とは、1とその数自身以外に正の約数を持たない、1より大きい自然数のことです。判定用のコードは以下の通りです。

サンプルコード

<?php
function check_prime($num)
{
    if ($num == 1)
        return 0;
    for ($i = 2; $i <= $num/2; $i++)
    {
        if ($num % $i == 0)
            return 0;
    }
    return 1;
}
$num = 47;
$flag_val = check_prime($num);
if ($flag_val == 1)
   echo "It is a prime number";
else
   echo "It is a non-prime number"
?>

実行結果

It is a prime number

コードの解説

このプログラムでは、「check_prime」という名前の関数を定義し、数値が素数かどうかを判定しています。判定対象となる数値は、引数として関数に渡されます。

関数の内部処理は以下の流れになっています。

  • 引数が「1」の場合は素数ではないため、0 を返します。
  • 2 から元の数値の半分までの整数で順番に割り算を行い、1つでも割り切れる数が見つかれば素数ではないと判断して 0 を返します。
  • ループが最後まで終了しても割り切れる数が存在しなければ、その数は素数であるとして 1 を返します。

プログラム本体では、判定したい数値として 47 を変数 $num に代入し、それを引数として check_prime 関数を呼び出します。戻り値が 1 であれば「It is a prime number(素数です)」、そうでなければ「It is a non-prime number(素数ではありません)」というメッセージが出力されます。

なお、判定範囲を数値の半分までにしているのは、それ以上大きな約数は存在しないためです。さらに効率化したい場合は、判定範囲を √num(平方根)までに狭めることで、処理速度を向上させることもできます。

  1. Pythonで数値が二面素数(Dihedral Prime)かどうかを判定する方法

    ある整数nが与えられたとき、それが「二面素数(dihedral prime)」であるかどうかを判定する方法を解説します。二面素数とは、その数自体が素数であり、さらに7セグメントディスプレイに表示した際に、表示の向き(通常の向きでも上下逆さまでも)に関わらず、同じ数または別の素数として読み取れる数のことです。例えば、入力がn = 1181の場合、出力はTrueになります。下の数字は上の数字を上下逆さま(180度回転)にして表示したものであり、どちらも素数となっています。アルゴリズムの手順この問題を解くために、以下の手順で進めます。up_side_down() 関数を定義します。引数としてnを受け

  2. Pythonで素数を判定するプログラムの書き方を徹底解説

    はじめに この記事では、「与えられた数値が素数かどうかを判定する」という問題に対する解決策を、Pythonのコード例とともにわかりやすく解説します。 問題の概要 問題設定:ある数値が与えられたとき、その数が素数であるかどうかを判定するプログラムを作成します。 まず「素数」の定義をおさらいしましょう。1より大きい正の整数のうち、1とその数自身以外に約数を持たない数を素数(そすう)と呼びます。たとえば、2、3、5、7などはそれ以外の約数を持たないため、素数です。 プログラムの考え方 今回作成するプログラムでは、入力された数値が素数かどうかを以下の手順で判定します。 1以下の数値は素数ではない