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

与えられた数列に特定の数が存在するかどうかを判定するPHPプログラム

与えられた数列(等差数列)の中に特定の数が存在するかどうかを判定したい場合、以下のようなコードで簡単に実現できます。

サンプルコード

<?php
function contains_in_sequence($val_1, $val_2, $val_3)
{
    if ($val_1 == $val_2)
        return true;
    if (($val_2 - $val_1) * $val_3 > 0 &&
        ($val_2 - $val_1) % $val_3 == 0)
        return true;
    return false;
}
$val_1 = 11; $val_2 = 99; $val_3 = 2;
print_r("Is the number present in the sequence? ");
if (contains_in_sequence($val_1, $val_2, $val_3))
    echo "Yes, it is present in the sequence";
else
    echo "No, it is not present in the sequence";
?>

出力結果

Is the number present in the sequence? Yes, it is present in the sequence

コードの解説

このプログラムでは、「contains_in_sequence」という名前の関数を定義しています。まず、引数として渡された2つの値($val_1 と $val_2)が一致しているかどうかをチェックし、一致していれば true を返します。

次に、2つの値の差($val_2 − $val_1)に第3の値($val_3)を掛けた結果が 0 より大きいかどうか、さらにその差を $val_3 で割った余りが 0 になるかどうかを確認します。これらの条件がすべて満たされれば、$val_1 を初項とし公差 $val_3 の等差数列の中に $val_2 が含まれていることになるため、true を返します。どちらの条件も満たさない場合は false を返します。

その後、3つの変数に具体的な値(11、99、2)を代入し、それらを引数として関数を呼び出します。判定結果に応じたメッセージが画面に出力されます。

判定ロジックのポイント

「($val_2 - $val_1) * $val_3 > 0」という条件は、$val_2 が $val_1 から公差と同じ方向へ進んでいることを保証します。また、「($val_2 - $val_1) % $val_3 == 0」という条件は、2つの値の差が公差 $val_3 の整数倍であることを確認しています。この2つの条件を組み合わせることで、$val_2 が確かに等差数列上の項であるかどうかを正確に判定できるのです。

  1. 非再帰関数を使って2つの整数の最大公約数(GCD)を求めるCプログラム

    問題与えられた2つの整数について、非再帰関数を用いて最大公約数(GCD:Greatest Common Divisor)を求めます。解決策最大公約数を求める最も一般的な方法は、ユークリッドの互除法です。これは「大きい方の数を小さい方の数で割った余り」と「小さい方の数」の最大公約数が、元の2つの数の最大公約数と等しくなるという性質を利用したものです。この性質を関数として実装することで、繰り返し処理によって効率よくGCDを計算できます。以下では、非再帰的なアプローチで2つの整数の最大公約数を求める手順を説明します。アルゴリズム非再帰関数を使って2つの整数の最大公約数(GCD)を求めるためのアルゴリ

  2. Pythonで指定した範囲内の特別な数の個数を求めるプログラム

    整数の範囲が与えられ、その範囲内に含まれる特別な数の個数を求めることを考えます。ここでいう特別な数とは、10進表現で1桁しか持たない正の整数のことです。さらに、2桁以上の数であっても、その数が自身の桁数で割り切れ、かつ商がそれ自体特別な数である場合には、特別な数とみなされます。この条件をもとに、与えられた範囲 (left_limit, right_limit) 内に存在する特別な数の個数を返します。例として、left_limit = 5、right_limit = 30 が入力された場合、出力は 13 になります。この範囲内の特別な数は次の13個です。5, 6, 7, 8, 9, 10, 12