IT Help Desk > Web based Developer Forum

PHP codes to simplify fractions

(1/1)

msu_math:
The FracSymp($A) function returns the simplest form of the fraction $A. 

function FracSymp($A)

  {
    if(FracCheck($A)==0 || FracDenom($A)==0) { return NULL; }   

    if(FracNumer($A)%FracDenom($A)==0) 

            $ret=FracNumer($A)/FracDenom($A)."";

    elseif(FracDenom($A)%FracNumer($A)==0)

           $ret="1"."/".FracDenom($A)/FracNumer($A);

    else
            {
                 $gcd = NumGCD(FracNumer($A), FracDenom($A));
                 $ret = FracNumer($A)/$gcd."/".FracDenom($A)/$gcd;
            }

    if(FracDenom($ret)<0) 

            { $ret = -FracNumer($ret)."/".-FracDenom($ret); }

    return $ret;
  }

msu_math:
The NumGCD() function returns the greatest common divisor(GCD) of two numbers only and the function NumNGCD() returns GCD of several numbers.

function NumGCD($A, $B)
 {
   if($A==0 || $B==0) { return NULL;}
   if($A<0)  $A=-$A;
   if($B<0)  $B=-$B;
   if($A>=$B) { $bigger=$A; $smaller=$B; }
   else { $bigger=$B; $smaller=$A; }
   while(1)
      {
         $C = $bigger%$smaller; if($C==0) { $gcd=$smaller.""; return $gcd; }
         $bigger = $smaller; $smaller = $C;
     }
 }

function NumNGCD($A)
  {
    $ngcd=$A[1]; $i=1;
    while($A[$i]!=NULL) { $ngcd=NumGCD($ngcd,$A[$i]); $i++; }
    return $ngcd;
  }

msu_math:
NumLCM() function returns least common multiple(LCM) of two numbers only and the function NumNLCM() returns LCM of several numbers.   

function NumLCM($A, $B)
 {
   if($A<0) { $A = -$A; }
   if($B<0) { $B = -$B; }
   if($A>=$B) { $bigger=$A; }
   else  { $bigger=$B; }
   for($n=$bigger;$n<$A*$B;$n+=$bigger)
       {
            if($n%$A==0 && $n%$B==0) { $lcm=$n.""; return $lcm; }
       }
   $lcm=$A*$B."";  return $lcm;   
 }

function NumNLCM($A)
  {
    $nlcm=$A[1]; $i=1;
    while($A[$i] != NULL) { $nlcm=NumLCM($nlcm,$A[$i]); $i++; }
    return $nlcm;
  }

msu_math:
Sample return values of FracSymp() function:

FracSymp("24/32");       Return value:  "3/4"

FracSymp("-21/7");        Return value:  "-3"

FracSymp("1/8");           Return value:  "1/8"

FracSymp("22/1");         Return value:  "22"

Navigation

[0] Message Index

Go to full version