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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
#1

НОД (наибольший общий делитель) n-го количества чисел - C++

09.09.2012, 16:48. Просмотров 1871. Ответов 12
Метки нет (Все метки)

Помогите, пожалуйста, написать программу на С++, которая бы находила НОД(наибольший общий делитель) n-го количества числа(n ввести с клавиатуры)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос НОД (наибольший общий делитель) n-го количества чисел (C++):

Вычислить НОД (наибольший общий делитель) двух натуральных чисел A и B - C++
Задача 4. Вычислить НОД (наибольший общий делитель) двух натуральных чисел A и B.

Найти НОД (наибольший общий делитель) массива натуральных чисел - C++
Найти НОД (наибольший общий делитель) массива натуральных чисел. Спасибо за помощь :)

Вычислить НОД (наибольший общий делитель) двух целых чисел - C++
1. Написать программу, вычисляющую НОД (наибольший общий делитель) двух целых чисел. Поиск НОД вынести в отдельную функцию. 2. Написать...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.09.2012, 20:16 #2
Micki, что есть "n-ое количество числа"?
0
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.09.2012, 21:09 #3
NOD(a,b,c) = NOD(NOD(a,b),c),
NOD(a1,...,an) = NOD(NOD(...),an)
А про NOD можете здесь почитать
Самый быстрый алгоритм Евклида вычисления НОД
0
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
10.09.2012, 07:05  [ТС] #4
BumerangSP, n-го количества чисел
1
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.09.2012, 14:34 #5
Цитата Сообщение от Micki Посмотреть сообщение
BumerangSP, n-го количества чисел
Ясно. Ну, алгоритмы приведены, т.ч. нет смысла переписывать заново.
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
10.09.2012, 21:58 #6
Еще можно разложить на простые множители, тогда можно будет искать НОД и НОК и еще много полезных фишек.
0
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
12.09.2012, 10:37  [ТС] #7
Цитата Сообщение от BumerangSP Посмотреть сообщение
Ясно. Ну, алгоритмы приведены, т.ч. нет смысла переписывать заново.
а не могли бы вы, если не сложно, написать программу? что-то у меня не выходит...
0
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.09.2012, 11:41 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<cmath>
 
long Nod(long a, long b)
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
}
 
int main()
{
   long i, n, a, nod;
   std::cout << " n = "; std::cin >> n;
   if (n > 0)
   {
      std::cin >> a;
      nod = labs(a);
      for(i = 1; i < n && nod != 1; ++i)
      {
         std::cin >> a;
         nod = Nod(labs(a), nod);
      }
      std::cout << "nod = " << nod;
   }
   return 0;
}
Можно покороче код записать, но он уступает предыдущему варианту.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
 
 
long Nod(long a, long b)
{
   return a && b ? (a >= b ? Nod(a % b, b) : Nod(a, b % a)) : a + b;
}
 
long Nod_n(long *a, long *end)
{
   return a < end ? Nod(Nod_n(a + 1, end), *a) : 0;
}
 
int main()
{
   long a[] = {2, 6, 8, 10}, n;
   n = sizeof(a) / sizeof(*a);
   std::cout << "nod = " << Nod_n(a, a + n);
   return 0;
}
1
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
12.09.2012, 17:11  [ТС] #9
Цитата Сообщение от Thinker Посмотреть сообщение
long Nod(long a, long b)
а что значит эта строка? просто я только начал изучать энтонт язык...
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
12.09.2012, 17:17 #10
Micki, функция по имени Nod целочисленного типа long с двумя входными параметрами a и b (тоже типа long).
1
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
12.09.2012, 17:34  [ТС] #11
BumerangSP, Что эта функция делает?
П.с: вот эти две строчки тоже поясните, пожалуйста
Цитата Сообщение от Thinker Посмотреть сообщение
return a | b
Цитата Сообщение от Thinker Посмотреть сообщение
nod = Nod(labs(a), nod)
0
BumerangSP
12.09.2012, 17:37
  #12

Не по теме:

Micki, автор кода лучше объяснит, когда появится

0
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.09.2012, 17:44 #13

Не по теме:

BumerangSP, да и у Вас хорошо это получается



return a | b;
Возвращает то из чисел a и b, которое не равно 0. Можно и так
return a + b;

nod = Nod(labs(a), nod)
labs(a) - модуль числа a. Функция вычисляет NOD у a и nod. Используется правило
http://www.cyberforum.ru/cgi-bin/latex.cgi?NOD(a_1,...,a_n) = NOD(NOD(a_1,...,a_{n-1}), a_n)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2012, 17:44
Привет! Вот еще темы с ответами:

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

Написать программу, которая находит НОД(наибольший общий делитель) двух целых чисел, введенных пользователем - C++
Кто знает как в С++ решить задачу при помощи цикла for? Написать программу, которая находит НОД (наибольший общий делитель) двух целых ...

Наибольший общий делитель (НОД) - C++
Вычислить наибольший общий делитель элементов целочисленного списка.

Описать функцию NOD2(A,B) целого типа,находящую наибольший общий делитель(НОД) двух целых положительных чисел А и В,используя алгоритм Евклида:.... - C++
Описать функцию NOD2(A,B) целого типа,находящую наибольший общий делитель(НОД) двух целых положительных чисел А и В,используя алгоритм...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.09.2012, 17:44
Ответ Создать тему
Опции темы

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