Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Casual
Есть задача: наибольший делитель 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
М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...

исправляем

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

Может автор имел ввиду наименьшее общее кратное? (НОК)
Casual
Если в мою программу ввести 3 числа, например, 128, 64, 32 выдает ответ 32. А мне нужно что бы ответ был 2(в данном случае)
andriano
Число 2 не является ни наименьшим, ни наибольшим общим делителем.
Сформулируй поточнее, что именно тебе нужно.
В противном случае можно предложить только такое решение:
writeln('2');
Casual
А чем тогда 2 является? Мне нужно ввести 3 числа и найти такое число, на которое делятся все эти 3 числа, но чтобы оно было самым маленьким. Наверно это и называется НОК? smile.gif
andriano
НОК - это наименьшее число, делящееся на все указанные.
Наименьший делитель, как тебе уже сказали - единица.
Что такое 2 - никто не знает.
Casual
Найти наименьшее общее кратное 3х чисел.
volvo
НОК находится через НОД:
function NOK (A: integer;  B: integer): integer;
begin
NOK := a * b div NOD (a, b)
end;
, ну, а как вызывать ты уже знаешь (точно так же, как в первом посте вызывал NOD)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.