-2

我需要缩短分数:4/5 * 3/4 = 12/20,但我需要缩短它,所以答案必须是:3/5。我知道我必须使用这个功能:

int NWD(int m1,int m2){
   int d;
   while((m1!=0)&&(m2!=0)){
    if(m1>=m2) m1=m1%m2;
    else m2=m2%m1;
    return d=m1+m2;}
    }

那你能帮帮我吗?

4

3 回答 3

2

您需要将分子和分母都除以两个数字的 GCD。

计算 GCD 整数

gcdr ( int a, int b )
{
  if ( a==0 ) return b;
  return gcdr ( b%a, a );
}

礼貌:GCD 代码片段

于 2013-03-20T16:42:28.317 回答
1

您可以通过将分子和分母都除以两者的最大公约数来简化这些分数。计算 GCD 的常用方法是欧几里得算法

于 2013-03-20T16:40:21.813 回答
0

这看起来像是您的函数的正确版本。

int NWD(int m1,int m2){
   while((m1!=0)&&(m2!=0)){
    if(m1>=m2) m1=m1%m2;
    else m2=m2%m1;
   }
   return m1+m2;
}

int num = 12;
int den = 20;
int d = NWD(num,den);
cout << num/d << '/' << den/d;

未经测试的代码。

于 2013-03-20T16:44:41.350 回答