Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 8
1

Программа нахождения НОД двух чисел (нужны комментарии)

22.06.2017, 00:50. Показов 5496. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Только недавно начал изучать С++, не могу осмыслить блок инструкций после while. Можете, пожалуйста, объяснить простыми словами как это происходит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int n1, n2;
    int nod;
    int r;
    cout<<"Input n1: \n";
    cin>>n1;
    cout<<"Input n2: \n";
    cin>>n2;
    while(n1%n2) {
        r=n1%n2;
        n1=n2;
        n2=r;
    }
    nod=n2;
    cout<<n2;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2017, 00:50
Ответы с готовыми решениями:

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

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

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

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

6
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
22.06.2017, 01:10 2
Алгоритм Евклида. Это не сюда, а на математический форум.
Наибольший общий делитель делит два числа A и B без остатка.
Представим A как B*N+X. Значит, НОД у нас делит без остатка B и B*N+X. Если X у нас здесь нулевой, значит НОД равен B.
Если НОД делит без остатка B, ясное дело он делит без остатка и B*N. Из чего следует что он должен делить без остатка и X (иначе сумма B*N+X не поделится).
Го в начало, поменяв A и B, на X и B.
1
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 8
22.06.2017, 21:17  [ТС] 3
Ну а все-таки, может кто объяснить пошагово как здесь работает цикл while ?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
22.06.2017, 21:20 4
Цитата Сообщение от koyonn Посмотреть сообщение
Ну а все-таки, может кто объяснить пошагово как здесь работает цикл while ?
С самим то циклом что не ясно? % - остаток от деления. Цикл крутится пока этот остаток не нулевой (нулевое значение считается за ложь, не нулевое - за истину).
0
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 8
22.06.2017, 21:48  [ТС] 5
Renji, в общих чертах я понимаю как это происходит, но только начал циклы изучать. В голове я не могу представить как одна переменная заменяется другою, если я правильно понял.
Вот взять числа 20(n1) и 15(n2), что будет с ними происходить в цикле, можете, пожалуйста, описать?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
22.06.2017, 21:50 6
Цитата Сообщение от koyonn Посмотреть сообщение
Я в голове не могу представить как одна переменная заменяется другою, если я правильно понял.
Через оператор присваивания =. Опять же, что непонятно то? r получает остаток от деления, n1 получает значение n2, n2 получает значение r. Именно в такой последовательности.
1
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 8
22.06.2017, 22:31  [ТС] 7
Renji, сел и на бумаге подробно расписал по шагам и все получилось, спасибо
0
22.06.2017, 22:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2017, 22:31
Помогаю со студенческими работами здесь

Программа рекурсивного нахождения НОД. Не могу понять.
Доброе время суток! Программа с рекурсией. Не могу понять строку: return 2 * nod(x / 2, y / 2);...

Изучение алгоритмов для нахождения НОД целых чисел
Было задание ниже и я написал код к нему, но на выполнении //Задание - 2 он начинает вылетать из...

Рекурсия: нахождение чисел Фибоначчи (нужны комментарии)
это функция нахождения чисел фибоначи. немогу понять как она работает можите написат как это...

нод двух чисел
Помогите составить программу нахождение нод двух введенных чисел


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru