Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Ingwarrr
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 10
1

Составить нерекурсивную функцию нахождения НОД двух чисел

27.01.2017, 15:14. Просмотров 204. Ответов 2
Метки нет (Все метки)

Объясните пожалуйста код!

Задача:
Составить нерекурсивную функцию нахождения НОД двух чисел.

Взял код с инета, а понять не могу.
C++
1
2
3
4
5
6
7
8
9
10
int NOD (int a, int b)
{
    while (b)
    {
        a %= b;
        swap (a, b);
    }
 
    return a;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2017, 15:14
Ответы с готовыми решениями:

Используя функцию нахождения НОД двух натуральных чисел, сократить обычную дробь
Используя функцию nod нахождения наибольшего общего делителя двух натуральных...

Программа нахождения НОД двух чисел (нужны комментарии)
Только недавно начал изучать С++, не могу осмыслить блок инструкций после...

Написать программу для нахождения НОД двух произвольных целых чисел
1. Написать программу для нахождения НОД двух произвольных целых чисел. 2....

Разработать функцию, которая находит НОД двух целых чисел.
Разработать функцию, которая находит НОД двух целых чисел.

Составить рекурсивную и нерекурсивную функцию
Найти сумму: 1^2+3^2+5^2+7^2... (n слагаемых). Буду очень признательна.

2
Байт
Эксперт C
18526 / 12031 / 2508
Регистрация: 24.12.2010
Сообщений: 24,305
27.01.2017, 17:27 2
Ingwarrr, Что именно непонятно?
А вообще-то, чтобы понять, что делает код, есть такой прием. Берете 2 числа. И вручную прогоняете через код. Смотрите, что происходит на каждом операторе.
Например, берете a = 28, b=21
C++
1
2
3
4
5
6
7
8
9
int NOD (int a, int b)
{
while (b)
{
a %= b;
swap (a, b);
}
return a;
}
заодно поймете, зачем теги кода надо ставить

Добавлено через 4 минуты
Строка 3: b не ноль спускаемся ниже
5: a = a%b = 28%21 = 7
6: Меняем a = 21 b = 7
Возвращаемся к 3: b не ноль - циклимся дальше
5: a = 21%7 = 0
6: a = 7, b=0
Возвращаемся к 3: b ноль - Выходим из цикла
строка 8: возвращаем a (7) - это и есть НОД
2
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
27.01.2017, 18:10 3
На всякий случай
"%" - взятие остатка от деления
swap(a, b) - обмен значений.
C++
1
2
3
4
5
6
void swap(int &a, int &b)
{
  int tmp = a;
  a = b;
  b = tmp;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2017, 18:10

Написать функцию, определяющую НОД(наибольший общий делитель) двух целых чисел
Написать функцию, определяющую НОД(наибольший общий делитель) двух целых чисел....

Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных чисел
Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида ...

Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД......
Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru