Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 19:12   #1
RIOs
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 49
По умолчанию НОД (делфи)

Найти наибольший общий делитель четырех чисел.

Код:
Var A,B,C,K,M,N: Integer;
Procedure Evklid;
Begin
While M<>N Do
If M>N
Then M:=M-N
Else N:=N-M;
K:=M
End;
Begin
Write('a=');
ReadLn(A);
Write('b=');
ReadLn(B);
Write('c=');
ReadLn(C);
M:=A+B+C;
N:=Abs(A-B-C);
Evklid;
M:=K;
N:=A*B*C;
Evklid;
WriteLn('nod=',K);
readln;
End.
для 3 чисел получалось (так в учебнике было написано) , но как только я стал пытаться найти НОД для 4х чисел сразу же стало что-то не так. Я добавил лишь переменную С.
RIOs вне форума Ответить с цитированием
Старый 28.12.2011, 19:20   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
 нод(a,b,c,d)=нод(нод(a,b),нод(d,c));
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 28.12.2011, 19:24   #3
RIOs
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 49
По умолчанию

не много не понял как это будет выглядеть в программе.
RIOs вне форума Ответить с цитированием
Старый 28.12.2011, 20:56   #4
RIOs
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 49
По умолчанию

я не понял как в программе все это написать. наибольший общий делитель мы находим как 2 разных нод у 2х разных чисел, так? только как-то не правильным получится общий нод.
RIOs вне форума Ответить с цитированием
Старый 28.12.2011, 22:48   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а при чём здесь Дельфи, Паскаль и другие языки программирования?
Вы математику за 4-5 класс (начальная школа) помните?
НОД - это наибольший общий делитель?
И он может быть найден для двух чисел, а может - для трёх, четырёх и т.д.
Когда дети решают в тетрадке, они делают так - для каждого числа M выписывают в строчку все его делители (начиная с 1 и заканчивая M). Потом для второго числа, потом для третьего и т.д.
Когда все делители выписаны, то отдельно выписывают ОБЩИЕ делители - это те делители, которые являются делителем для любого из чисел (т.е. на каждой строчке напротив каждого числа).

Потом берёт из них НАИБОЛЬШИЙ.
всё.

ну и возвращаясь к программированию.
НОД(A,B,C,D) = НОД(A, НОД( B, НОД(С, D) ) )
т.е. находите нод любых двух чисел. потом находите НОД от полученного числа и следующего числа, потом находите НОД от полученного числа и следующего числа и т.д. пока числа не кончатся. Полученный в конечном итоге НОД и будет наибольшим общим делителем ВСЕХ чисел..

p.s. на форуме полно примеров вычисления НОД. В том числе и на Паскале...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение НОД Мария17 Общие вопросы .NET 1 25.05.2011 18:31
Нахождение НОД Egorka1990 Помощь студентам 4 22.12.2010 22:44
Нод 32 KompKsena Безопасность, Шифрование 3 27.12.2009 18:38
мин,макс,нод,нок на делфи melville Помощь студентам 8 10.11.2009 00:20