Помощь - Поиск - Пользователи - Календарь
Полная версия: подпрограммы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
zinvor
Помогите написать программу определяющий нод (наибольший общий делитель)4 натуральных чисел! smile.gif
Himka
Цитата(zinvor @ 19.03.2010 15:52) *

Помогите написать программу определяющий нод (наибольший общий делитель)4 натуральных чисел! smile.gif

Как-то так:

var
 NOD: integer;
 NATDIG: array[1..4] of integer;
 I: integer;
 F: boolean;
 BUF: integer;

begin
 for I:=1 to 4 do
  begin
   write(I, '-e chislo: ');
   readln(NATDIG[I]);
  end;
  F:=True;
  while F do
  begin
   F:=False;
   for I:=1 to 3 do
	if NATDIG[I]>NATDIG[I+1] then
	 begin
	  F:=true;
	  BUF:=NATDIG[I];
	  NATDIG[I]:=NATDIG[I+1];
	  NATDIG[I+1]:=BUF;
	 end;
  end;
  NOD:=1;
  for I:=2 to NATDIG[1] do
   if ((NATDIG[1] mod I)=0) AND ((NATDIG[2] mod I)=0) AND ((NATDIG[3] mod I)=0)
	 AND ((NATDIG[4] mod I)=0) then NOD:=I;
  writeln('MAX NOD = ', NOD);
  readln;
end.




М
Himka, ставь правильные тэги, пожалуйста (правила раздела вверху страницы, п.2)
Исправлено.
Lapp

volvo
НОД для N чисел элементарно считается через подпрограмму, вычисляющую НОД двух чисел (для двух - делается вообще элементарно. Попробуй написать функцию самостоятельно):

Res := arr[1];
for i := 2 to n do
  Res := NOD(Res, arr[i]);

в Res имеем наибольший общий делитель всех чисел в массиве, не надо никаких ужасных условий...
zinvor
спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.