我需要缩短分数: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;}
}
那你能帮帮我吗?
您需要将分子和分母都除以两个数字的 GCD。
计算 GCD 整数
gcdr ( int a, int b )
{
if ( a==0 ) return b;
return gcdr ( b%a, a );
}
礼貌:GCD 代码片段
您可以通过将分子和分母都除以两者的最大公约数来简化这些分数。计算 GCD 的常用方法是欧几里得算法。
这看起来像是您的函数的正确版本。
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;
未经测试的代码。