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

Нахождение НОД n чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
04.01.2013, 01:32     Нахождение НОД n чисел #1
Даны n натуральных чисел. Найти их наибольший общий делитель, используя алгоритм Евклида, учитывая, что НОД(а,в,с)=НОД(НОД(а,в),с).
(Определить функцию для расчёта наибольшего общего делителя двух натуральных чисел, используя алгоритм Евклида)
Помогите пожалуйста решить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2013, 01:32     Нахождение НОД n чисел
Посмотрите здесь:

C++ нахождение нод и нок двух чисел на С++
C++ нод двух чисел
Нахождение НОД C++
НОД восьми чисел C++
C++ Нахождение НОД и сравнение двух чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
04.01.2013, 09:02     Нахождение НОД n чисел #2
Функция gcd, которая возвращает наибольший общий делитель двух целых чисел
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 11:03     Нахождение НОД n чисел #3
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
31
32
33
34
35
36
37
38
39
40
41
42
#include "iostream"
#include "limits.h"
#include "windows.h"
using namespace std;
 
 
int nod(int n, int m)
{
    if(m==0)
        return n;
    if(n>m)
        return nod(m,n-m);
    else
        return nod(n,m-n);
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n;
    int * arr;
    int nod_;
    cout << "Введите количество чисел" << endl;
    cin >> n;
    arr = new int[n] ;
    for (int i = 0; i < n; i++) {
        cout << "Введите "<< i+1 << " число" <<endl;
        cin >> arr[i];
    }
    if (n >= 2) {
        nod_ = nod(arr[0],arr[1]);
    } else {
        nod_ = arr[0];
    }
    for (int i = 2 ; i < n ; i++) {
         nod_ = nod(nod_,arr[i]);
    }
    cout << "НОД "<< nod_  <<endl;
    system("pause");
    return 0;
}
Добавлено через 22 секунды
Croessmah, тут могла сложность возникнуть в вызове нода n раз
iifat
2179 / 1332 / 96
Регистрация: 05.06.2011
Сообщений: 3,689
04.01.2013, 11:15     Нахождение НОД n чисел #4
Цитата Сообщение от Nixy Посмотреть сообщение
C++
1
2
3
4
5
6
if (n >= 2) {
  nod_ = nod(arr[0],arr[1]);
 } else {
  nod_ = arr[0]; 
}
for (int i = 2 ; i < n ; i++) {
Ну или то ж самое чуть покороче:
C++
1
2
nod_ = arr[0]; 
for (int i = 1 ; i < n ; i++) {
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 11:18     Нахождение НОД n чисел #5
Цитата Сообщение от iifat Посмотреть сообщение
Ну или то ж самое чуть покороче:
C++
1
2
nod_ = arr[0]; 
for (int i = 1 ; i < n ; i++) {
ну да не подумал
Croessmah
04.01.2013, 11:20
  #6

Не по теме:

Цитата Сообщение от Nixy Посмотреть сообщение
Croessmah, тут могла сложность возникнуть в вызове нода n раз
А у Вас сложность в том, что на линуксе не покатит. Но Вы же код выложили

Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 11:37     Нахождение НОД n чисел #7
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


А у Вас сложность в том, что на линуксе не покатит. Но Вы же код выложили

у меня сложности с этим нет) просто если кому то надо будет на линукс догадается не подключать "windows.h"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2016, 23:28     Нахождение НОД n чисел
Еще ссылки по теме:

C++ НОД 3-х чисел
C++ Нахождение НОД
Разработать класс "Cmp", обеспечивающий нахождение НОД и НОК двух чисел C++

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

Или воспользуйтесь поиском по форуму:
Pashkevich2
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 1
25.04.2016, 23:28     Нахождение НОД n чисел #8
C++
1
2
3
4
5
6
7
8
{
    if(m==0)
        return n;
    if(n>m)
        return c(m,n-m);
    else
        return c(n,m-n);
}
а для чего это?
Yandex
Объявления
25.04.2016, 23:28     Нахождение НОД n чисел
Ответ Создать тему
Опции темы

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