Pagini recente » Cod sursa (job #743592) | Cod sursa (job #1266232) | Cod sursa (job #679599) | Cod sursa (job #1561685) | Cod sursa (job #628110)
Cod sursa(job #628110)
//cmmdc prin decompunere in factori primi
//descompunerea prin eratostene
{$r-}
const nmax = 10000;
var fi,fo:text;
var fp:array[1..nmax,1..10] of integer;
nrfp:array[1..nmax] of byte;
sita:array[1..nmax] of integer;
function ggt(n1,n2:longint):longint;
var i:integer;
begin
ggt := 2;
if nrfp[n1]<nrfp[n2] then
for i := 1 to nrfp[n1] do
if n2 mod fp[n1][i]=0 then exit
else
else
for i := 1 to nrfp[n2] do
if n1 mod fp[n2][i]=0 then exit;
ggt:=1;
end;
function ggt1(n1,n2:longint):longint;
var j:integer;
begin
ggt1 := 2;
for j := 1 to nrfp[n2] do
if n1 mod fp[n2][j]=0 then exit;
ggt1:=1;
end;
var dx,dy,mini,maxi,i,j,x1,x2,y1,y2,ct,max,d,aux,nrprim:longint;
begin
assign(fi,'mins.in'); reset(fi);
assign(fo,'mins.out'); rewrite(fo);
readln(fi,x2,y2);
close(fi);
dx := x2-x1-1;
dy := y2-y1-1;
if dx<dy then begin mini := dx; maxi := dy end
else begin mini := dy; maxi := dx end;
//construiesc tabloul de factori primi
for i := 2 to mini do
if sita[i]=0 then
begin
j := i;
while j<=mini do
begin
inc(nrfp[j]);
fp[j][nrfp[j]]:=i;
sita[j]:=1;
inc(j,i)
end;
end;
{
for i := 2 to maxi do
begin
write(i,' ');
for j := 1 to nrfp[i] do
write(fp[i][j],' ');
writeln
end;
}
ct:=0;
for i := 2 to mini do
for j := 1 to i-1 do
if j=1 then inc(ct)
else
if ggt(i,j)=1 then
inc(ct);
ct := ct*2;
for i := mini+1 to maxi do
for j := 1 to mini do
if j=1 then inc(ct)
else
if ggt1(i,j)=1 then
inc(ct);
writeln(fo,ct+1);
close(fo);
end.