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

Материал из synset
Перейти к: навигация, поиск
(Новая страница: « == Целочисленная арифметика(описание) == В данном разделе представлены описания и реализа…»)
 
Строка 1: Строка 1:
 
 
== Целочисленная арифметика(описание) ==
 
== Целочисленная арифметика(описание) ==
  
Строка 27: Строка 26:
 
</pre>
 
</pre>
  
== Функция для определения наибольшего общего делителя: ==
+
== Наибольший общий делитель: ==
 +
 
 +
<pre class="brush:pascal; gutter: false;">
 +
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;
 +
</pre>
 +
 
 +
== Наименьшее общее кратное ==
  
 
<pre class="brush:pascal; gutter: false;">
 
<pre class="brush:pascal; gutter: false;">
 +
program SCM;
 +
 
Function GCD(a,b:longint):longint;
 
Function GCD(a,b:longint):longint;
 
var
 
var
Строка 41: Строка 58:
 
   GCD:=x;
 
   GCD:=x;
 
end;
 
end;
 +
 +
var
 +
  a,b:integer;
 +
begin
 +
  Read(a,b);
 +
  WriteLn(f2,a*b div GCD(A,B));
 +
  ReadLn;
 +
end.
 
</pre>
 
</pre>

Версия 12:53, 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;

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

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.