2011-09-28 38 views
4

我已經作出了控制檯應用程序,相加和相減的級分,我已經添加了一個功能,以簡化:在C#簡化餾分

public static Numbers Add(Numbers n1, Numbers n2) 
    { 
     int den1; 
     int num1; 
     int num2; 
     int dsimp; 
     int nsimp; 
     int numtop; 
     num1 = n1.Numerator * n2.Denominator; 
     num2 = n2.Numerator * n1.Denominator; 
     den1 = n1.Denominator * n2.Denominator; 
     numtop = num2 + num1; 

     if (numtop == 0) 
     { 
      return new Numbers(0); 
     } 
     if (numtop % n1.Denominator == 0) 
     { 
      nsimp = numtop/n1.Denominator; 
      dsimp = den1/n1.Denominator; 
      return new Numbers(nsimp, dsimp); 

     } 

     else 
     { 
      return new Numbers(numtop, den1); 
     } 
    } 

當我把在1/2 + 4/8它簡化了一切完美我告訴它的方式,但是,它給了我8/8。這需要簡化爲1/1。我如何獲得它可以簡化已經簡化到最低分數的部分?

回答

8

將分子和分母除以分子和分母的GCD (greatest common divisor)。例如:

例如:

先說12/8。 GCD是4.因此3/2。

+2

的確,您需要找到GCD:http://en.wikipedia.org/wiki/Greatest_common_divisor – MrFox

+0

@MFFOX:謝謝,添加了鏈接。 – leppie

+2

如果數字基於BigInteger,則存在現有方法:http://msdn.microsoft.com/zh-CN/library/system.numerics.biginteger.greatestcommondivisor.aspx GCD – CodesInChaos