Pagini recente » Cod sursa (job #2138385) | Cod sursa (job #1231929) | Cod sursa (job #2902437) | Cod sursa (job #1786238) | Cod sursa (job #5353)
Cod sursa(job #5353)
program gfact;
var p,q:longint;
f,g:text;
divizor,putere:longint;
function prim(x:longint):boolean;
var d:longint;
begin
if x in [0..1] then begin
prim:=false;
exit;
end;
prim:=true;
for d:=2 to trunc(sqrt(x)) do
if x mod d=0 then
begin
prim:=false;
exit;
end;
end;
procedure iofile;
var d,e:longint;
begin
assign(f,'gfact.in');
reset(f);
assign(g,'gfact.out');
rewrite(g);
readln(f,p,q);
d:=2;
while p<>1 do
begin
e:=0; if d mod 2=1 then
if prim(p) then
d:=p;
while p mod d=0 do
begin
p:=p div d;
inc(e);
end;
inc(d);
end;
divizor:=d-1;
putere:=e*q;
close(f);
end;
procedure prel;
var i:longint;
put,x,d,diviz:longint;
begin
put:=0;
i:=0;
x:=1;
diviz:=1;
while x<=putere do
begin
x:=x*divizor+1;
diviz:=diviz*divizor;
end;
x:=(x-1)div divizor;
diviz:=diviz div divizor;
while putere>0 do
begin
i:=i+(putere div x)*diviz;
putere:=putere mod x;
x:=(x-1)div divizor;
diviz:=diviz div divizor;
end;
writeln(g,i*divizor);
close(g);
end;
begin
iofile;
prel;
end.