Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
#1

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

03.07.2014, 22:38. Просмотров 644. Ответов 4
Метки нет (Все метки)

Задание: найти наибольший общий делитель двух чисел.

Сам код:
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. Пожалуйста, объясните, как это работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2014, 22:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти наибольший общий делитель двух чисел (C++):

Найти наибольший общий делитель двух чисел - C++
найти наибольший общий делитель двух чисел с помощью рекурсии и без нее

Найти наибольший общий делитель двух чисел - C++
Для заданных натуральных целых чисел n и m найти наибольший общий делитель (НОД), используя следующее соотношение НОД(n, m) = НОД (n, r),...

Найти наибольший общий делитель двух чисел - C++
Задача &quot;Длинный НОД&quot; Даны два числа. Найти их наибольший общий делитель. Входные данные Вводятся два натуральных числа, не превышающих 10^9...

Найти наибольший общий делитель двух чисел Фибоначчи - C++
Добрый вечер, решаю задачу, ошибка на шестом тесте. Условии задачи: Последовательностью Фибоначчи называется последовательность чисел...

Требуется найти наибольший общий делитель двух чисел Фибоначчи. - C++
ЗАДАЧА №384 Числа Фибоначчи - 3 (Время: 1 сек. Память: 16 Мб Сложность: 52%) Последовательностью Фибоначчи называется...

Найти наибольший общий делитель и наименьшее общее кратное двух чисел - C++
Даны два натуральных числа m и n. Найти их наибольший общий делитель и наименьшее общее кратное. Определить в программе собственную функцию...

4
nmcf
5542 / 4852 / 1645
Регистрация: 14.04.2014
Сообщений: 19,687
03.07.2014, 22:41 #2
Пока (b != 0).
0
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
Вот и всё.
0
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
03.07.2014, 22:58  [ТС] #4
Raily, спасибо, теперь понял
0
Raily
3 / 3 / 1
Регистрация: 31.01.2014
Сообщений: 34
03.07.2014, 23:06 #5
ну хоть спасибо нажми 8)
0
03.07.2014, 23:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2014, 23:06
Привет! Вот еще темы с ответами:

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

Найти наибольший общий делитель двух введенных чисел, используя алгоритм Евклида - C++
Тема: Функции2. 6. Найти наибольший общий делитель (ндс) двух введенных чисел, используя алгоритм Евклида. Алгоритм Евклида: отнимать от...

Найти наибольший общий делитель и наименьшее общее кратное двух введенных натуральных чисел - C++
Напишите пожалуйста код =)

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


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

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

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