Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача

Автор: Casual 13.05.2008 19:11

Есть задача: наибольший делитель 3 чисел.


Program NOD3;
var a, b, c:integer;
function NOD(a:integer; b:integer):integer;
begin
while(a<>0) and (b<>0) do if a>=b then a:=a mod b else b:=b mod a;
NOD:=a+b;
end;
begin
writeln('vvedite 3 chisla');
readln(a, b, c);
NOD(a,b);
writeln('NOD=',NOD(NOD(a,b),c));
readln;
end.


теперь нужно наити НАИМЕНЬШИЙ общий делитель 3 чисел a,b,c. Как это сделать?

Автор: Michael_Rybak 13.05.2008 19:32

М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...

исправляем


Автор: Xorian 13.05.2008 20:41

А разве наименьший общий делитель для любых чисел не равен 1 ?

Может автор имел ввиду наименьшее общее кратное? (НОК)

Автор: Casual 13.05.2008 22:02

Если в мою программу ввести 3 числа, например, 128, 64, 32 выдает ответ 32. А мне нужно что бы ответ был 2(в данном случае)

Автор: andriano 13.05.2008 22:32

Число 2 не является ни наименьшим, ни наибольшим общим делителем.
Сформулируй поточнее, что именно тебе нужно.
В противном случае можно предложить только такое решение:

writeln('2');

Автор: Casual 13.05.2008 23:09

А чем тогда 2 является? Мне нужно ввести 3 числа и найти такое число, на которое делятся все эти 3 числа, но чтобы оно было самым маленьким. Наверно это и называется НОК? smile.gif

Автор: andriano 13.05.2008 23:15

НОК - это наименьшее число, делящееся на все указанные.
Наименьший делитель, как тебе уже сказали - единица.
Что такое 2 - никто не знает.

Автор: Casual 14.05.2008 0:10

Найти наименьшее общее кратное 3х чисел.

Автор: volvo 14.05.2008 0:38

НОК находится через НОД:

function NOK (A: integer;  B: integer): integer;
begin
NOK := a * b div NOD (a, b)
end;
, ну, а как вызывать ты уже знаешь (точно так же, как в первом посте вызывал NOD)