** С++ ПОЖАЛУЙСТААлгоритм Евклида для вычисления наибольшего общего делителя двух...

0 голосов
133 просмотров

НА С++ ПОЖАЛУЙСТА
Алгоритм Евклида для вычисления наибольшего общего делителя двух натуральных чисел, формулируется так: нужно заменять большее число на разность большего и меньшего до тех пор, пока одно из них не станет равно нулю; тогда второе и есть НОД. Напишите программу, которая реализует этот алгоритм.

Входные данные
Входная строка содержит два числа, разделённые пробелом – a и b .

Выходные данные
Программа должна вывести в одной строке два числа: сначала наибольший общий делитель двух введённых чисел, а затем – количество шагов цикла, которые были выполнены.

Примеры
входные данные
14 21
выходные данные
7 3


Информатика (503 баллов) | 133 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

#include

using namespace std;
int main()
{
    int a, b, nod;
    int k=0;
cin >> a >> b;
while (a*b != 0){
if (a>b) a -=b;
else b -= a;
k++;
}
nod = a+b;
cout << nod << " " << k;<br>    return 0;
}

Пример:
14 21
7 3

(194k баллов)
0 голосов

#include

using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    int cnt = 0;
    if (a < b) swap(a, b);
    while (b != 0) {
        a = a - b;
        if (a < b) swap(a, b);
        cnt++;
    }
    cout << a << " " << cnt;<br>    return 0;
}

(13.3k баллов)