Решил своим способом, а заодно проверил решение от разработчиков. Никак не пойму эту логику: while (first != second) { if (first > second) { first -= second; } if (second > first) { second -= first; } } return first; НОД получится либо отрицательным, либо неправильным, если я правильно понял. В нашем конкретном случае: 42-24=18... 18-24=-6. Или int автоматом выдает модуль числа?