Cod sursa(job #42778)

Utilizator Bluedrop_demonPandia Gheorghe Bluedrop_demon Data 29 martie 2007 15:22:56
Problema Fractii Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.24 kb
{
    Problema fractii
    Versiunea n.00
}

Program fractii;

Type vector = array[1..1000000] of Longint;

Var nr : int64;
    c, c2 : vector;
    n, i, j, aux, k : longint;

Function totient( m : longint ) : Longint;
Var i, rez : Longint;
Begin
    rez := m;
    i := 1;
    While c2[i] <= m do
        Begin
            if m mod c2[i] = 0 then
                Begin
                    rez := rez div c2[i];
                    rez := rez*(c2[i]-1);
                End;
            i := i+1;
        End;
    totient := rez;
End;

Begin
    Assign( input, 'fractii.in' );
    Reset( input );
        Readln( n );
    Close( input );


    k := 0;
    For i := 2 to n do
        If c[i] = 0 then
            Begin
                k := k+1;
                c2[k] := i;
                aux := i;
                j := aux;
                While j <= n do
                    Begin
                        j := j+aux;
                        c[j] := 1;
                    End;
            End;
    k := k+1;
    c2[k] := n+1;

    nr := 1;
    For i := 2 to n do
        nr := nr + totient( i )*2;


    Assign( output, 'fractii.out' );
    Rewrite( output );
        Writeln( nr );
    Close( output );
End.