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

НА С++ ПОЖАЛУЙСТА Алгоритм Евклида для вычисления наибольшего общего делителя двух натуральных чисел, формулируется так: нужно заменять большее число на разность большего и меньшего до тех пор, пока одно из них не станет равно нулю; тогда второе и есть НОД. Напишите программу, которая реализует этот алгоритм. Входные данные Входная строка содержит два числа, разделённые пробелом – a и b . Выходные данные Программа должна вывести в одной строке два числа: сначала наибольший общий делитель двух введённых чисел, а затем – количество шагов цикла, которые были выполнены. Примеры входные данные 14 21 выходные данные 7 3
Гость
Ответ(ы) на вопрос:
Гость
#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;     return 0; } Пример: 14 21 7 3
Гость
#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;     return 0; }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы