Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > НОД и НОК


Автор: TORQUE 28.1.2006, 10:42
Как решить эту задачу
Нужно найти НОД и НОК от n-чисел.
НОД(a1,a2,a3,.......an), НОК(a1,a2,a3,.......an).
НОД-Наибольший общий делитель
НОК-Наименьший общий кратный

Автор: DeadSoul 28.1.2006, 11:32
TORQUE, как найди НОК и НОД двух чисел знаешь?

Автор: TORQUE 30.1.2006, 15:58
DeadSoul ну да. Но я хочу пример на паскале smile

Автор: roar 30.1.2006, 16:02
Найди сначала НОД первых двух чисел (a1,a2), затем НОД получившегося M и следуещего числа a3. Найдешь снова какой нибудь M и находи НОД (M,a4).Продолжай до конца и найдешь общий НОД.
Насчет НОК' а точно не знаю но попытайся точно также smile

Автор: armageddon 31.1.2006, 16:53
чтобы найти Нод- алгоритм Эвклида, про нок не знаю;

Автор: DeadSoul 31.1.2006, 23:10
Цитата(armageddon @ 31.1.2006, 16:53 Найти цитируемый пост)

чтобы найти Нод- алгоритм Эвклида, про нок не знаю;

НОК(a,b)*НОД(a,b)=a*b

Автор: armageddon 1.2.2006, 09:49
вопрос, не про 2 числа, а про n чисел!!!!!!!!!

Автор: Akina 1.2.2006, 12:53
НОК(a, b, c) = НОК( НОК(a,b), c)
НОД(a, b, c) = НОД( НОК(a,b), c)
НОД(a, b) = НОД(a, b MOD a)
НОК(a, b) * НОД(a, b)=a * b

Этого достаточно для решения исходной задачи.

Автор: armageddon 1.2.2006, 20:03
Код

uses crt;
var
m,n,a,b,i:longint;
function nod(m,n: integer): integer;
begin
 while m<>n do
 if m>n then m:=m-n
 else n:=n-m;
 nod:=m;
end;
begin
clrscr;
 writeln('введите кол-во чисел');
 readln(n);
 write('введите первое число');
 readln(a);
 for i:=1 to (n-1) do
 begin
 writeln('введите следующее число');
 readln(b);
 {a:=nod(a,b)};
 m:=nod(a,b);
 n:=(a*b) div m;
 end;
 writeln('нод=',m);
 writeln('нок=',n);
readkey;
end.

только протестируй её нормально

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)