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

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

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

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

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

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

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

Нахождение НОД и НОК двух чисел - C++
Вот код программы на Паскале нужно переделать на С++ { Рекурсивные алгоритмы: нахождения НОД и НОК двух чисел } var a,b:longint; ...

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

Нахождение НОД - C++
Здравствуйте, мне надо найти НОД чисел. Как это реализовать на языке C++ ?

Нахождение НОД - C++
Программа ищет наибольший общий делитель, проблема в том что если ввести ,допустим, числа 25 и 5 ,то она выведет не наибольший, а все...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,225
Записей в блоге: 3
Завершенные тесты: 1
04.01.2013, 09:02 #2
Функция gcd, которая возвращает наибольший общий делитель двух целых чисел
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 11:03 #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
2228 / 1381 / 103
Регистрация: 05.06.2011
Сообщений: 3,808
04.01.2013, 11:15 #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
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 11:18 #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
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 11:37 #7
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


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

у меня сложности с этим нет) просто если кому то надо будет на линукс догадается не подключать "windows.h"
Pashkevich2
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 2
25.04.2016, 23:28 #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);
}
а для чего это?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2016, 23:28
Привет! Вот еще темы с ответами:

Как найти НОК и НОД нескольких чисел или n чисел ? - C++
Собственно вопрос в теме . Как найти двух чисел нод ,нок я могу .А как это найти НОД,НОК n чисел ? Помогите пожалуйста !

НОД 3-х чисел - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; using std:: cin; using std:: cout; using std:: ios_base; using...

НОД 2-х чисел - C++
Всем привет. Вообще мне нужно написать программу на Прологе, которая с помощью рекурсии находит НОК 2-х чисел. Но я, честно, не совсем...

НОД восьми чисел - C++
Ребята, помогите написать программу, которая будет находить НОД уже известных восьми чисел. Заранее благодарю:)


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

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

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