• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最大公約数と最小公倍数の問題 php)

最大公約数と最小公倍数の問題 php

このQ&Aのポイント
  • 最大公約数と最小公倍数を求める問題を解くための処理が理解できません。具体的には、return _gcd($b, $a % $b); の部分がわからないです。例えば、$bに6、$aに8が入っていた場合、この処理は何を返すのでしょうか?
  • $bと$aを最大公約数を求めるために再帰的に渡す処理です。具体的には、$bには$aを、$aには$aを$bで割った余りを渡しています。
  • この処理は、$bが0になるまで繰り返されます。最終的には、$bが0になると、$aが最大公約数となります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

まず、$a % $b  は、 $aを$bで割った余りです。例えば、8 % 6 の結果は  2です。 そして、function _gcd のなかでは、 $bを$a に入れ替え, $aを$bで割った余りを$bとしながら、 $bが0になるまで、_gcdの呼び出しを繰り返しています。 このように、自分自身を呼び出すことを再帰的アルゴリズムというのですが、 このケースならば、whileループでも記載でき function _gcd($a, $b ) {  while ( $b != 0 ) {   $w = $b; //$b値を一旦確保   $b = $a % $b; //$aと$bで割った余りを$bへ代入   $a = $w; //剰余する前の$b値を$aへ代入  }  return $a; } と書くこともできます。

carax1251
質問者

お礼

ご丁寧に対応していただいて、ありがとうございます。 とても、分かりやすかったです。 親切にありがとうございます。

その他の回答 (2)

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.2

_gcd(6, 8%6)=_gcd(6, 2)=_gcd(2, 6%2)=_gcd(2, 0)=2 再帰的に処理されます。

carax1251
質問者

お礼

再帰的に処理されるんですね。 ありがとうございます。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

6 と 8%6 つまり、6 と 2 の最大公約数を返します。

carax1251
質問者

お礼

ありがとうございます。

関連するQ&A