ホームページ  >  記事  >  バックエンド開発  >  PHP ループ学習 9: 指定された 2 つの数値間の最大公約数を取得する

PHP ループ学習 9: 指定された 2 つの数値間の最大公約数を取得する

青灯夜游
青灯夜游オリジナル
2021-08-13 16:58:553691ブラウズ

前回の記事「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;
  • # に代入します##ステップ 3: 剰余 r が 0 かどうかを判断します。

    r=0 の場合、上の b は最大公約数です。r!=0 の場合、b の値を a、r に割り当てる必要があります。値を b に代入し、引き続き a/b の余りを求め、余り r が 0 かどうかを判断します。これにはループを使用する必要があります (ここでは while ループが使用されています):

  • while ($r != 0) {
    		$a = $b;
    		$b = $r;
    		$r = $a % $b;
    	}
  • 4 番目のステップ: 最大公約数を出力します。 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 ループ学習 9: 指定された 2 つの数値間の最大公約数を取得する

わかりました、話しましょう 私たちはここにいます 他に知りたい場合は、これをクリックしてください。 → →

php ビデオチュートリアル

推奨: PHP 面接の質問の要約 (コレクション)>>

以上がPHP ループ学習 9: 指定された 2 つの数値間の最大公約数を取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。