#include <iostream>
int GCD()
{
int a,b,k;
cout<<"Enter a and b"<<endl;
cin>>a>>b;
cout<<endl;
if (a>b)
{
k=a;
}
else
{
k=b;
}
cout<<k<<endl;
do
{
k=k-1;
} while(a%k !=0 && b%k !=0);
cout<<k<<endl;
return 0;
}
Почему такая программа не работает правильно? Например, когда я ввожу 125 и 5, ответ - 25, но должен быть 5? Я не прав с логикой в то время как цикл? Как я понял, проблема в модуле оператора. Когда k
достигает 25
, это говорит о том, что 125%25=0
и 5%=25=0
. Как я могу это исправить?