2017-10-20 5 views
-5

私は2つの番号があると仮定し、それらの番号の最低の比率を計算します。たとえば私は持っています。どのように2つの番号の最低比率を取得するには?

50:5 12:ので、私は2欲しい100:2 40:100私は1が欲しい100をので、私は午前3時25分

がどのように私はPHPを使用して、それらの最低比率を得ることができますしたいですか? 再帰関数を書きましたが、それが私の期待を満たしていませんでした。最も低い比率を得る最も簡単な方法はありますか?ありがとうございます事前に

function get_ratio($number1, $number2) 
{   

    $flag = 0; 

    for($i = 2; $i <= $number1; $i++) 
    { 
     if($number1 % $i == 0){$flag = 1 ;} 

     if($flag == 1) 
     { 
      if($number2 % $i == 0){$flag = 1 ;}else{ $flag = 0; } 
     } 

     if($flag == 1) 
     { 
      $number1 /= $i; 
      $number2 /= $i;     
      $flag = 0; 
      $this->get_ratio($number1, $number2);     
     }    
    } 
    echo "<br/>"; 
    echo $number1." ".$number2; 
} 
+4

http://idownvotedbecau.se/nocode/ –

+0

コードが追加されて以来、私のdownvoteが削除されました –

+0

ありがとうEtienne Faucher –

答えて

1

2つの数字の最大公約数(GCD)を見つけ、両方の数字をこれで分ける必要があります。あなたはPHPでGMPをインストールしている場合

、あなたはGCDを計算する

function gcd($left, $right) { 
    return ($left % $right) ? gcd($right,$left % $right) : $right; 
} 

ような何かを、gmp_gcd

ない場合は使用することができます。

+0

Thanks a lot bro –

1

あなたは2つの数字の最大公約数を見つけ、これで分ける必要があります。これは、ユークリッドアルゴリズム、すなわち、a1> a2であるa1およびa2である場合には、

  1. を計算してa1%a2を計算します。それがゼロの場合、答えはa2です。ゼロでない場合は、a3とします。
  2. a2%a3を計算します。それがゼロの場合、a3が答え、そうでなければa4と呼ばれます。
  3. ゼロに達するまで上記のように進んでください(これは非常に多くのステップの後に行います)。
関連する問題