Pascal:Целочисленная арифметика — различия между версиями

Материал из synset
Перейти к: навигация, поиск
 
(не показана 1 промежуточная версия этого же участника)
(нет различий)

Текущая версия на 12:56, 21 февраля 2010

Целочисленная арифметика(описание)

В данном разделе представлены описания и реализация программ которые могут быть полезны в решении задач с целочисленной арифметикой.

Функция для определения принадлежности числа к простым:

Function Prime(n:longint):boolean;
var
   p,i:longint;
   b:boolean;
begin
   b:=true;
   if (n=1) or ((n>3) and (n mod 2=0)) then
   b:=false
   else
   begin
      p:=trunc(sqrt(n));
      i:=3;
      While (i<=p) and b do
      begin
         b:=n mod i<>0;
         i:=i+2;
      end;
   end;
   Prime:=b;
end; 

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

Function GCD(a,b:longint):longint;
var
   x,y:longint;
begin
   x:=a;
   y:=b;
   While x<>y do
      if x>y then x:=x-y
      else y:=y-x;
   GCD:=x;
end;

Наименьшее общее кратное

Для нахождения НОК удобно использовать следующее свойство: для любых натуральных чисел a и b верно равенство НОД(a,b)*НОК(a,b)=a*b , откуда получаем, что НОК(a,b)=a*b/НОД(a,b).

program SCM;

Function GCD(a,b:longint):longint;
var
   x,y:longint;
begin
   x:=a;
   y:=b;
   While x<>y do
      if x>y then x:=x-y
      else y:=y-x;
   GCD:=x;
end;

var
   a,b:integer;
begin
   Read(a,b);
   WriteLn(f2,a*b div GCD(A,B));
   ReadLn;
end.