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

【PHP】指定した数が無限数列に存在するかどうかを判定するプログラム

この記事では、指定した数がある無限数列(初項と公差からなる等差数列)の中に存在するかどうかを判定するPHPプログラムを紹介します。数列の数学的な性質を利用することで、実際に数列を順番に生成することなく、効率よく判定できるのが特徴です。

サンプルコード

<?php
    function contains_val($m, $n, $o){
        if ($m == $n)
            return true;
        if (($n - $m) * $o > 0 && ($n - $m) % $o == 0)
            return true;
        return false;
    }
    $m = 3; $n = 5; $o = 9;
    if (contains_val($m, $n, $o))
        echo "The number is present in the infinite series";
    else
        echo "The number is not present in the infinite series";
?>

出力

The number is not present in the infinite series

コードの解説

まず、3つの変数 $m、$n、$o を定義し、それらの値を引数として関数に渡して呼び出しています。

$m = 3; $n = 5; $o = 9;

次に、これら3つの値を受け取る「contains_val」という名前の関数を定義します。処理の流れは以下のとおりです。

  • 最初の2つの変数 $m と $n を比較し、両者が等しい場合は「true」を返します。
  • 等しくない場合は、$m と $n の差に第3引数 $o を掛けた値が0より大きいこと(つまり差と公差が同じ向きであること)、かつ $m と $n の差を $o で割った余りが0であることを確認します。両方の条件を満たせば「true」を返します。
  • 上記のいずれの条件も満たさない場合は「false」を返します。
function contains_val($m, $n, $o){
    if ($m == $n)
        return true;
    if (($n - $m) * $o > 0 && ($n - $m) % $o == 0)
        return true;
    return false;
}

判定ロジックのポイント

このプログラムが判定しているのは、初項 $m、公差 $o から構成される無限等差数列($m、$m + $o、$m + 2×$o、…)の中に、目的の数 $n が含まれているかどうかです。数学的には、「n − m」が「o」と同じ符号を持ち、かつ「o」で割り切れるとき、n はこの数列の項になると言えます。

今回の例では、$m = 3、$n = 5、$o = 9 であるため、5 − 3 = 2 は 9 で割り切れません。その結果、「この数は無限数列に存在しない」というメッセージが出力されます。このように、余りと符号のチェックだけシンプルな条件で判定できるのが、この手法の利点です。

  1. Pythonで数値が醜い数(Ugly Number)かどうかを判定するプログラム

    ある整数 n が与えられたとき、その素因数が 2・3・5 のみで構成されているかどうかを判定する問題を考えてみましょう。この条件を満たす正の整数は「醜い数(Ugly Number)」と呼ばれます。 例えば、入力が n = 18 の場合を考えます。18 の素因数は 2 と 3 だけなので、出力は True となります。 アルゴリズムの手順 この問題は、次の手順で解くことができます。 n < 0 の場合は False を返します。 チェック対象の因数として [2, 3, 5] のリストを用意します。 各因数 i について、n が i で割り切れる間、n を i で割り続けます。 最終的に

  2. 【Python入門】数値が素数かどうかを判定するプログラムの書き方

    この記事では、ユーザーが入力した数値(1より大きい整数)が素数かどうかを判定するPythonプログラムを紹介します。サンプルコードと実行結果、処理の流れを丁寧に解説しているので、Python初心者の方でも理解しやすい内容になっています。素数とは?素数とは、1より大きい正の整数のうち、約数が1とその数自身の2つしか存在しない数のことです。たとえば、2・3・5・7・11などは約数が1と自分自身だけであるため素数です。一方、4や6のように1と自分自身以外の約数を持つ数は「合成数」と呼ばれます。素数判定プログラムのサンプルコード# 入力された数値が素数かどうかを判定するPythonプログラム # ユ