Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
Рекомендую алгоритм Евклида. 14.11.03 09:39 Число просмотров: 1400
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
|
> Подскажите решение программы на Си. > Дано 5 натуральных чисел. найти их наибольший общий > делитель. > > Спасибо.
Беруться два числа и вычитается из большего меньшее до тех пор пока они не будут равны. Для пяти чисел соответственно нужно найти НОД первых двух, далее найти НОД результата первых двух с третим, и т.д. То есть НОД(Х1...Х5)=НОД(Х5,НОД(Х4,НОД(Х3,НОД(Х2,Х1)))).
Есть еще одна версия нахождения НОДа: пока числа не сравняются наибольшее заменяется на остаток деления наибольшего на меньшее.
|
<programming>
|
НОД 14.11.03 07:01
Автор: MadMan Статус: Незарегистрированный пользователь
|
Подскажите решение программы на Си.
Дано 5 натуральных чисел. найти их наибольший общий делитель.
Спасибо.
|
|
Рекомендую алгоритм Евклида. 14.11.03 09:39
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
|
> Подскажите решение программы на Си. > Дано 5 натуральных чисел. найти их наибольший общий > делитель. > > Спасибо.
Беруться два числа и вычитается из большего меньшее до тех пор пока они не будут равны. Для пяти чисел соответственно нужно найти НОД первых двух, далее найти НОД результата первых двух с третим, и т.д. То есть НОД(Х1...Х5)=НОД(Х5,НОД(Х4,НОД(Х3,НОД(Х2,Х1)))).
Есть еще одна версия нахождения НОДа: пока числа не сравняются наибольшее заменяется на остаток деления наибольшего на меньшее.
|
| |
Рекомендую алгоритм Евклида. 15.11.03 07:28
Автор: MadMan Статус: Незарегистрированный пользователь
|
> Беруться два числа и вычитается из большего меньшее до тех > пор пока они не будут равны. Для пяти чисел соответственно > нужно найти НОД первых двух, далее найти НОД результата > первых двух с третим, и т.д. То есть > НОД(Х1...Х5)=НОД(Х5,НОД(Х4,НОД(Х3,НОД(Х2,Х1)))). > Есть еще одна версия нахождения НОДа: пока числа не > сравняются наибольшее заменяется на остаток деления > наибольшего на меньшее.
но как это еще реализовать на Си, т.к. у меня еще не такие большие знания в Си
но все равно спасибо...буду пытаться
|
| | |
Примерно так 16.11.03 17:16
Автор: amirul <Serge> Статус: The Elderman
|
#include <stdio.h>
#include <stdlib.h>
void
main(int argc, char *argv[]) {
unsigned long num1, num2;
unsigned long n1, n2, temp;
if (argc != 3) {
printf("Usage: %d num1 num2\n", argv[0]);
exit(-1);
}
num1 = atoi(argv[1]);
num2 = atoi(argv[2]);
if (num1 >= num2) {
n1 = num1;
n2 = num2;
} else {
n1 = num2;
n2 = num1;
}
do {
temp = n1;
n1 = n2;
n2 = temp % n2;
} while (n2 != 0);
printf("GCD(%d, %d) = %d\nLCM(%d, %d) = %d\n", num1, num2, n1, num1, num2, (num1 / n1) * num2);
}
---
Практически нет защиты от дурака - на это не так важно, главное иллюстрация.
|
|
|