Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 9
1

Написать алгоритм нахождения наибольшего общего делителя трех чисел

15.05.2016, 09:16. Просмотров 1729. Ответов 1

Написать алгоритм нахождения наибольшего общего делителя трех чисел C++ помогите пожалуйста, желательно с объяснением
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2016, 09:16
Ответы с готовыми решениями:

Написать подпрограмму нахождения наибольшего общего делителя двух чисел
Написать подпрограмму нахождения наибольшего общего делителя двух чисел N и M по реккурентному...

Рекурсивный алгоритм Евклида нахождения наибольшего общего делителя
Даны натуральные числа n, m. Найти НОД(n,m). Рекурсивный алгоритм Евклида нахождения наибольшего...

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

Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел
Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего...

1
380 / 274 / 478
Регистрация: 09.05.2014
Сообщений: 769
16.05.2016, 11:01 2
Лучший ответ Сообщение было отмечено jktin как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
int NOD (int a, int b, int c){
    int min;//находим минимальное значение из трех чисел (НОД не может быть больше, чем минимальное)
    if (a<=b&&a<=c)
        min=a;
    else if (b<=c)
        min=b;
    else
        min=c;
    for (int nod=min; nod>=1; nod--)//перебираем все числа от минимального до единицы
        if (a%nod==0&&b%nod==0&&c%nod==0)//если все три числа делятся текущее значение, значит это и есть НОД.
            return nod;
}
Добавлено через 8 минут
а так по идее должно быстрее работать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int NOD (int a, int b, int c){
    int min;
    if (a<=b&&a<=c)
        min=a;
    else if (b<=c)
        min=b;
    else
        min=c;
    for (int i=1; i<=min/2; i++)
    {
        int nod=min/i;
        if (a%nod==0&&b%nod==0&&c%nod==0)
            return nod;
    }
    return 1;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2016, 11:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Расчет наибольшего общего делителя двух натуральных чисел используя алгоритм эвклида
пожалуйста помогите решить задачу на си++. даны натуральные числа а и б,обозначенные соответственно...

Написать программу вычисления наибольшего общего делителя двух целых чисел Dev C++ 4.9.9.2
Помогите написать программу! Написать программу вычисления наибольшего общего делителя двух целых...

Разработать рекурсивную функцию, возвращающую значение нахождения наибольшего общего делителя методом Евклида
Решите пожалуйста, завтра необходимо сдать. Разработать рекурсивную функцию, возвращающую...

Нахождение наибольшего общего делителя n чисел
Найти НОД (наибольший общий делитель) n чисел. Входные данные Первая строка содержит...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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