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