Другие языки программирования и технологии

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

....используя наибольший общий делитель и алгоритм Евклида. не забудьте указать язык программирования
На паскале:

program nodnok;
uses crt;
function NOD(m,n:integer):integer;
begin
If m<>0 then NOD:=NOD(n mod m,m) else NOD:=n;
end;
function NOK(m,n:integer):integer;
begin
NOK:=(m div NOD (m,n))*n;
end;
var x,y: integer;
begin
clrscr;
writeln('Vvedite x y :');
readln(x,y);
writeln (NOK(x,y));
readln;
end.
ТС
Таалай Сейдакматов
149
Лучший ответ
Haskell:

gcd :: Integral a => a -> a -> a
gcd 0 0 = error "НОД (0,0) не определён"
gcd m n = gcd' (abs m) (abs n)
where gcd' m 0 = m
gcd' m n = gcd' n (rem m n)

lcm :: Integral a => a -> a -> a
lcm _ 0 = 0
lcm 0 _ = 0
lcm m n = abs ((quot m (gcd m n)) * n)
Паскаль:
begin
writeln ('vvedite N,K');
readln (N,K);
while N< >K do
if N>K then N:=N-K
else K:=K-N;
NOD:=N;
writeln ('НОД= ',NOD);
end.
Eugen Kronewald
Eugen Kronewald
2 288
1) Исходник на Си: http://algolist.ru/maths/teornum/nod.php (там все расписано)

2) Вот еще одна реализация на С++ (взято с www cyberforum ru ):
#include <stdio.h>
/* getnod: возвращает НОД двух чисел */
unsigned getnod(int a, int b)
{
unsigned nod, n1 = abs(a), n2 = abs(b);

for (nod = (n1 < n2) ? n1 : n2; nod > 0; nod--)
if (!(n1 % nod || n2 % nod))
break;
return nod;
}

main()
{
printf("%d\n", getnod(-12, -16));
return 0;
}

Похожие вопросы