Cod sursa(job #2023482)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 18 septembrie 2017 23:09:04
Problema Fractii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
bool prim[1000005];
vector <int> pr;
ll phi(ll n)
{
    ll x=n,i;
    for(i=0;i*i<=n;i++)
        if(!(n%pr[i]))
        {
            while(!(n%pr[i]))
                n/=pr[i];
            x=(x/pr[i])*(pr[i]-1);
        }
    if(n!=1) x=(x/n)*(n-1);
    return x;
}
int main()
{
    ll n,i,ans=1,j;
    f>>n;
    pr.push_back(2);
    for(i=3;i<=n;i+=2)
        if(!prim[i])
        {
            pr.push_back(i);
            for(j=2*i;j<=n;j+=i)
                prim[j]=true;
        }
    for(i=2;i<=n;i++)
        ans+=(2*phi(i));
    g<<ans;

    return 0;
}