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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
KoMaTo3Huk
5 / 5 / 1
Регистрация: 01.05.2012
Сообщений: 48
#1

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

04.01.2013, 01:32. Просмотров 3045. Ответов 7
Метки нет (Все метки)

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

C++ Нахождение НОД и НОК двух чисел
C++ нод двух чисел
Нахождение НОД C++
C++ Найти НОД 6-и чисел
C++ Нахождение НОД и сравнение двух чисел
C++ НОД 3-х чисел
C++ Нахождение НОД
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12520 / 7082 / 797
Регистрация: 27.09.2012
Сообщений: 17,491
Записей в блоге: 2
Завершенные тесты: 1
04.01.2013, 09:02     Нахождение НОД n чисел #2
Функция gcd, которая возвращает наибольший общий делитель двух целых чисел
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 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
2186 / 1339 / 98
Регистрация: 05.06.2011
Сообщений: 3,706
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
400 / 281 / 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
400 / 281 / 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 чисел
Еще ссылки по теме:

Разработать класс "Cmp", обеспечивающий нахождение НОД и НОК двух чисел C++
Нахождение НОД числа, на основе канонического разложения C++
НОД 2-х чисел C++
C++ НОД трех чисел
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 чисел
Ответ Создать тему
Опции темы

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