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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
#1

НОД для нескольких чисел - C++

01.09.2011, 21:36. Просмотров 3218. Ответов 5
Метки нет (Все метки)

не проблема найти НОД для двух чисел.
но как найти Нод для массива чисел(нескольких чисел)?просто находить НОД между парами чисел?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2011, 21:36     НОД для нескольких чисел
Посмотрите здесь:

C++ НОД для трех чисел.
C++ Нод для массива чисел
C++ Не срабатывает while (НОД для двух чисел)
Написать программу для нахождения НОД двух произвольных целых чисел C++
Нод для двух натуральных чисел с циклом for C++
Нод для 2-х заданных натуральных чисел с циклом while C++
C++ НОД 3-х чисел
НОД для 100 чисел C++
Изучение алгоритмов для нахождения НОД целых чисел C++
НОД для 3 чисел и более C++
НОД для нескольких чисел C++
C++ Для целых чисел N и M найти НОД

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
01.09.2011, 21:40     НОД для нескольких чисел #2
Между текущим НОД и очередным числом. До тех пор, пока числа не кончатся или очередной НОД не станет равным единице.
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
01.09.2011, 22:18  [ТС]     НОД для нескольких чисел #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int nod (int a, int b)  
{  
    if (b == 0) {
       if (a == 0)
           return -1; 
       else return a;}
    else abs(nod(b, a % b));
} 
 
int main()
{
    int n=0,n1=0;
    int ax[]={100,200,400};
    for(int i=0;i<3 & (n!=1);i++)
    {
        n1=n;
        n=nod(n1,ax[i]);
    }
    cout<<n<<endl;
}
так?
iama
1249 / 974 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
01.09.2011, 22:28     НОД для нескольких чисел #4
Artishok, вполне можно так (интуитивно понятней)
C++
1
2
3
4
int k = a[0];
 
for (int i = 1; i < a.size(); i++)
  k = lcs(k, a[i]);
Thinker
Эксперт C++
4220 / 2194 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.09.2011, 22:33     НОД для нескольких чисел #5
Либо через факторизацию, если она уже известна

И можно без лишних переменных

C++
1
2
3
4
for(int i = 0; i <3 & (n != 1); i++)
{
        n=nod(n, ax[i]);
}
А, iama уже так заметил
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.09.2011, 18:13     НОД для нескольких чисел #6
как найти Нод для массива чисел(нескольких чисел)?
NOD(a1,a2,a3)= NOD( NOD(a1,a2), a3 )
NOD(a1,a2,a3,a4)= NOD( NOD( NOD(a1,a2), a3 ), a4 )
и так далее ...
Yandex
Объявления
02.09.2011, 18:13     НОД для нескольких чисел
Ответ Создать тему
Опции темы

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