Cod sursa(job #2276410)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 4 noiembrie 2018 18:17:08
Problema Fractii Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
long long nr;
int n;
bool prim[1000001];
long long fi(int x)
{
    long long rez;
    int i;
    rez=x;
    for(i=2;i*i<=x;i++)
    {
        if(x%i==0)
        {
            while(x%i==0)
            {
                x=x/i;
            }
            rez=(rez/i)*(i-1);
        }
    }
    if(x!=1)
    {
        rez=(rez/x)*(x-1);
    }
    return rez;
}
int main()
{
    int i,j;
    f>>n;
    nr=1;
    for(i=2;i*i<=n;i++)
    {
        if(prim[i]==0)
        {
            for(j=2;j<=n/i;j++)
            {
                prim[i*j]=1;
            }
        }
    }
    for(i=2;i<=n;i++)
    {
        if(prim[i]==0)
        {
            nr=nr+2*(i-1);
        }
        else
        {
            nr=nr+2*fi(i);
        }
    }
    g<<nr;
    return 0;
}