Cod sursa(job #29496)

Utilizator salgau_catalinSalgau Mihai-Catalin salgau_catalin Data 9 martie 2007 15:03:43
Problema Fractii Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.83 kb
{$I-,OBJECTCHECKS-,Q-,R-,S-}
program fractii;
var prime:array[1..1000000] of boolean;
    n,i,j,k,o:longint;
    la:qword;
    lphi:double;
begin
 assign(input,'fractii.in');
 reset(input);
 readln(n);
 close(input);
 fillchar(prime,n,true);
 prime[1]:=false;
 j:=trunc(sqrt(n));
 i:=2;
 while i<j do
  begin
   if prime[i] then
    for k:=2 to n div i do
     prime[k*i]:=false;
   inc(i);
  end;
 la:=1;j:=2;
 while j<=n do
  begin
   //phi
   o:=j;
   lphi:=j;
   i:=2;
   while o>1 do
    begin
     if o mod i=0 then
      begin
       lphi:=lphi*(1-1/i); o:=o div i;
       while o mod i=0 do o:=o div i;
      end;
     repeat
      inc(i);
     until prime[i];
    end;
   la:=la+2*trunc(lphi);
   inc(j);
  end;
 assign(output,'fractii.out');
 rewrite(output);
 writeln(la);
 close(output);
end.