Форум программистов, компьютерный форум CyberForum.ru

Нахождение наибольшего общего делителя - почему выводит неверный итог? - C++

Восстановить пароль Регистрация
 
Lektron
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 10
11.05.2014, 11:17     Нахождение наибольшего общего делителя - почему выводит неверный итог? #1
Всем привет, что-то не могу понять Очень прошу помочь!
i
C++
1
2
3
4
5
6
7
8
9
nt  a, b;
cin >> a >> b;
while (b != 0) {
a %= b;
swap(a, b);
}
cout << a;
_getch();
return 0;
Вот код, это на нахождение наибольшего общего делителя
Только вот не понимаю как получается итог, например вводим 15 и 4, затем делим с остатком и остаток получается 3 затем остаток это переменная "a" мы меняем местами с переменной "b" и на выход идет 1, почему идет 1, а не 4? Ведь мы их поменяли местами и получилось 4 и 3..никак не доходит до меня.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 11:17     Нахождение наибольшего общего делителя - почему выводит неверный итог?
Посмотрите здесь:

Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел C++
C++ нахождение наибольшего общего делителя для 6-и чисел
C++ Поиск наибольшего общего делителя
Написать рекурсивную функцию вычисления Наибольшего общего делителя C++
C++ Написать подпрограмму нахождения наибольшего общего делителя двух чисел
Напишите программу с использованием функции для вычисления наибольшего общего делителя C++
C++ Нахождение наибольшего общего делителя
Рекурсивный алгоритм Евклида нахождения наибольшего общего делителя C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wertz
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 11
11.05.2014, 11:24     Нахождение наибольшего общего делителя - почему выводит неверный итог? #2
Так:
C++
1
2
3
4
5
6
7
int gcd (int a, int b) {
    while (b) {
        a %= b;
        swap (a, b);
    }
    return a;
}
Либо так:
C++
1
2
3
4
5
6
int gcd (int a, int b) {
    if (b == 0)
        return a;
    else
        return gcd (b, a % b);
}
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,191
Завершенные тесты: 1
11.05.2014, 11:34     Нахождение наибольшего общего делителя - почему выводит неверный итог? #3
a b
15 4 исходные
3 4 остаток от деления
4 3 переставляем
1 3 остаток от деления
3 1 переставляем
0 1 остаток от деления
1 0 переставляем, b равно нулю - конец
Yandex
Объявления
11.05.2014, 11:34     Нахождение наибольшего общего делителя - почему выводит неверный итог?
Ответ Создать тему
Опции темы

Текущее время: 17:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru