unit P167_11a;

interface

function min(a,b:integer):integer;
function max(a,b:integer):integer;
function sum(a,b:integer):integer;
function dif(a,b:integer):integer;
function prod(a,b:integer):integer;
function cifcom(a,b:integer):string;
function divcom(a,b:integer):integer;
function multcom(a,b:integer):integer;
function IsPrim(a:integer):boolean;
function AreCif(N:integer;c:byte):boolean;

implementation

function min(a,b:integer):integer;begin min:=(a+b-abs(a-b))div 2;end;
function max(a,b:integer):integer;begin max:=(a+b+abs(a-b))div 2;end;
function sum(a,b:integer):integer;begin sum:=a+b;end;
function dif(a,b:integer):integer;begin dif:=a-b;end;
function prod(a,b:integer):integer;begin prod:=a*b;end;
function AreCif(N:integer;c:byte):boolean;
  begin
   AreCif:=false;
   n:=abs(n);
   while(n>0)do begin
    if n mod 10 =c then AreCif:=true;
    n:=n div 10;
   end;
  end;

function cifcom(a,b:integer):String;
var s:string;
begin
  s:='';
  while a>0 do begin
   if AreCif(b,a mod 10)then s:=s+chr(a mod 10+48);
   a:=a div 10;
  end;
  cifcom:=s;
end;

function divcom(a,b:integer):integer;
var i:integer; d:integer;
begin
 d:=1;
 for i:=min(a,b) downto 2 do
  if (a mod i=0)and(b mod i=0)and(d mod i<>0)then d:=d*i;
 divcom:=d;
end;

function multcom(a,b:integer):integer;
var M,i:integer;
begin
 m:=max(a,b);
 for i:=Min(a,b) downto 2 do
  if(Min(a,b) mod i=0)and(DivCom(m,i)<>i)then m:=m div DivCom(m,i)*i;
  multcom:=m;
end;

function IsPrim(a:integer):boolean;
var i:integer;
begin
 i:=round(sqrt(a));
 while(i>1)and(a mod i<>0)do dec(i);
 IsPrim:=i=1;
end;

end.
