функция — сокращение доли переполнения стека

Мне нужно короткую дробь
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;}
}

Так ты можешь мне помочь?

-3

Решение

Вы можете упростить такие дроби, разделив числитель и знаменатель на наибольший общий делитель двух. Распространенным методом для расчета GCD является Евклидов алгоритм.

1

Другие решения

вам нужно разделить числитель и знаменатель на GCD двух чисел.

Рассчитать GCD int

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

любезность: для фрагмента кода GCD

1

Это похоже на правильную версию вашей функции.

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;

Непроверенный код.

0
По вопросам рекламы [email protected]