2017-10-20 10 views
-5

Supposons que j'ai deux nombres, je veux calculer le plus bas ratio de ces nombres. Par exemple j'ai.Comment obtenir le plus bas ratio de deux nombre?

50: 100 Je veux donc 1: 2 40: 100 donc je veux 2: 5 12: 100 donc je veux 3:25

Comment puis-je obtenir les plus bas ratio en utilisant PHP? J'ai écrit une fonction récursive mais elle n'a pas répondu à mes attentes. Y a-t-il un moyen plus simple d'obtenir le ratio le plus bas? Merci À l'avance

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

Suppression de mon downvote depuis l'ajout du code –

+0

merci Etienne Faucher –

Répondre

1

Vous devez trouver le plus grand diviseur commun (GCD) des deux nombres et diviser les deux nombres par ceci.

Si vous avez installé dans votre gmp php, vous pouvez utiliser gmp_gcd

Sinon, faire quelque chose comme

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

pour calculer le GCD.

+0

Merci beaucoup –

1

Vous devez trouver le plus grand diviseur commun des deux nombres et diviser par ceci. Cela peut se faire par l'algorithme d'Euclide, à savoir si vos chiffres sont a1 et a2 avec a1> a2:

  1. Compute a1% a2. Si c'est zéro, a2 est votre réponse. Si ce n'est pas zéro, appelez-le a3.
  2. Calculer a2% a3. Si c'est zéro, a3 est votre réponse, sinon appelez-le a4.
  3. Continuez comme ci-dessus jusqu'à ce que vous atteigniez zéro (ce que vous ferez après un nombre fini d'étapes).