前回の記事「PHP 配列学習: 指定された 2 つの数値間のすべての公約数と最大公約数を返す 」では、2 つの整数のすべての公約数を取得する方法を紹介しました。最大公約数を見つけること。今回は最大公約数を求める方法を紹介しますので、興味のある方はぜひ学んでみてください~
前回の記事では、2 つの整数の因数をすべて 2 つの配列に入れ、次に、array_intersect() 関数を使用して 2 つの配列の交差を見つけ、すべての共通因子を含む配列を取得できます。次に、max() 関数を使用して交差配列の最大数を計算すると、最大公約数が得られます。要素。
少し面倒ではありませんか? すべての因数を 1 つずつ見つけて、すべての公約数を計算し、最後に最大公約数を見つける必要があります。ここでは、シンプルで一般的な方法を示します (他の言語でも使用できます)。
今回は、PHP の組み込み関数を使用せず、if 判定文と while ループ文を使用して、与えられた 2 つの整数の最大公約数を求めます。
実装手順: 2 つの変数 a と b があります
最初の手順: a に大きな数値が配置され、小数が配置されていることを確認しますbで。
これを判断するには if ステートメントを使用する必要があります。a
if ($a < $b) { //a < b,则交换两个数 $temp = $a; $a = $b; $b = $temp; }
ステップ 2: a/b
の残りを見つけて、その値を r
$r = $a % $b;
r=0 の場合、上の b は最大公約数です。
r!=0 の場合、b の値を a、r に割り当てる必要があります。値を b に代入し、引き続き a/b の余りを求め、余り r が 0 かどうかを判断します。これにはループを使用する必要があります (ここでは while ループが使用されています):
while ($r != 0) { $a = $b; $b = $r; $r = $a % $b; }
<?php header("Content-type:text/html;charset=utf-8"); function gcd($a, $b) { $a1 = $a; $b1 = $b; if ($a < $b)//a < b,则交换两个数 { $temp = $a; $a = $b; $b = $temp; } $r = $a % $b; while ($r != 0) { $a = $b; $b = $r; $r = $a % $b; } echo "数$a1 和$b1 的最大公因数为: $b <br><br>"; } gcd(30, 40); gcd(12, 16); gcd(15, 12); ?>出力結果:
推奨: PHP 面接の質問の要約 (コレクション)>>
以上がPHP ループ学習 9: 指定された 2 つの数値間の最大公約数を取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。