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

Найти наибольший общий делитель двух чисел - C++

Восстановить пароль Регистрация
 
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
03.07.2014, 22:38     Найти наибольший общий делитель двух чисел #1
Задание: найти наибольший общий делитель двух чисел.

Сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int a,b,c;
    cout << "Введите a:";
    cin >> a;
    cout << "Введите b:";
    cin >> b;
  while (b) 
    {
      c = a % b;
      a = b;
      b = c;
   }
cout << a;
}
Не понятна функция:
C++
1
2
3
4
5
6
while (b) 
    {
      c = a % b;
      a = b;
      b = c;
   }
Что означает while(b)? Пока есть b? И дальше тоже...
Допустим, я беру a=105, а b=70, тогда c присваивается значение 35, a присваивается значение 70, а b присваивается значение 35, а в итоге выводится a, которая почему-то равная 35. Пожалуйста, объясните, как это работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2014, 22:38     Найти наибольший общий делитель двух чисел
Посмотрите здесь:

C++ Наибольший общий делитель двух целых чисел
C++ Найти наибольший общий делитель и наименьшее общее кратное двух введенных натуральных чисел.
C++ Найти наибольший общий делитель (НОД) двух введенных натуральных чисел, используя алгоритм Евклида
Наибольший общий делитель двух натуральных чисел C++
Требуется найти наибольший общий делитель двух чисел Фибоначчи. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
03.07.2014, 22:41     Найти наибольший общий делитель двух чисел #2
Пока (b != 0).
Raily
 Аватар для Raily
3 / 3 / 1
Регистрация: 31.01.2014
Сообщений: 34
03.07.2014, 22:48     Найти наибольший общий делитель двух чисел #3
Смотри:
while это цикл, означает ПОКА(пока b неравно(!=) 0) то есть пока b = true;
всё что ты расписал - это правильно, но цикл работает не один раз. После того как всё это выполнится, цикл продолжить работу и переменные будут менять значения;

Программа работает вот так...
a = 105
b = 70
c = 35
потом...
a = 70
b = 35
c = 35
потом...
a = 35
b = 0
c = 0
Вот и всё.
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
03.07.2014, 22:58  [ТС]     Найти наибольший общий делитель двух чисел #4
Raily, спасибо, теперь понял
Raily
 Аватар для Raily
3 / 3 / 1
Регистрация: 31.01.2014
Сообщений: 34
03.07.2014, 23:06     Найти наибольший общий делитель двух чисел #5
ну хоть спасибо нажми 8)
Yandex
Объявления
03.07.2014, 23:06     Найти наибольший общий делитель двух чисел
Ответ Создать тему
Опции темы

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