Эта программа предназначена для вычисления наименьшего общего кратного. Это не представляет деление на ноль, ни странные операции (насколько я знаю), но в какой-то момент оно ломается.
Кажется, программа возвращается "Floating point exception (core dumped)"
для любой пары значений.
* Условие: a> = 1 и b> = 1.
Код:
int mcd(int x, int y) { //computes greatest common divisor
if (x == 0) return y;
return mcd(y, x % y);
}
int mcm(int x, int y) { //computes smallest common multiple
return x * y / mcd(x, y);
}
int main() {
int a, b;
int counter = 0;
while (cin >> a >> b) {
++counter;
cout << "#" << counter
<< " : " << mcm(a, b) << endl;
}
}
Что вызывает это поведение?
Вы делитесь на ноль, потому что ваше условие остановки в строке 2 неверно. Правильный это:
if (y == 0) return x;
Источник: Евклидов алгоритм
Других решений пока нет …