Наибольший общий делитель

 

     Наибольшим общим делителем (НОД) двух целых чисел называется такое наибольшее положительное целое число, на которое делятся эти два числа. При этом, по определению, НОД(0,0)=0 и НОД(а,0)=|а|.

    В приведенной ниже программе НОД(a,b) вычисляется по алгоритму Евклида. С этой целью последовательно находятся остатки r_i от деления

 

a на b: a=b*q_1+r_1, (при b<>0)

b на r_1: b=r_1*q_2+r_2,

r_1 на r_2: r_1=r_2*q_3+r_3,

...................

и так пока r_n+1 не превратится в ноль. Тогда

 

НОД(a,b)=НОД(b,r_1)=...=НОД(r_n-1,r_n)=|r_n|.

 

     НОД нескольких чисел можно найти, используя соотношение

 

НОД(a,b,с)=НОД(НОД(a,b),c).

 

     Программа вычисления НОД

 

{NOD.pas

Сайт Algorithm (http://www.algorithm1.narod.ru/)

Автор проекта: Galina}

 

var a1,b1,f:integer;

function nod(a, b:integer):integer;

var r, r_1, r_2:integer;

begin

  r:=a; r_1:=b;

  while r_1 <> 0 do

  begin

    r_2:=r mod r_1;

    r:=r_1;

    r_1:=r_2;

  end;

  nod:=abs(r);

end;

 

begin

  writeln('Введите a1');

  readln(a1);

  writeln('Введите b1');

  readln(b1);

  f:=nod(a1,b1);

  writeln('NOD a1 и b1 = ',f);

end.

 


Автор проекта: Galina
Hosted by uCoz