Cod sursa(job #2279849)

Utilizator hongnhoNGUYENHONGNHO hongnho Data 10 noiembrie 2018 09:31:32
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
const long N=1e6+5;
long n,f[N],snt[N],top;
long long ans=0;
void sang()
{
    for(long i=2;i<=n;++i)
    {
        if(f[i]==0)
            f[i]=snt[++top]=i;
        for(long j=1;j<=top;++j)
        {
            if(snt[j]>f[i]||snt[j]*i>=N)break;
            f[snt[j]*i]=snt[j];
        }
    }
}
void lam()
{
    long val,res,pos;
    for(long i=1;i<=n;++i)
    {
        res=i;
        val=i;
        while(val>1)
        {
            pos=f[val];
            res=res*(pos-1)/pos;
            while(val%pos==0)val/=pos;
        }
        ans+=res;
    }
    cout<<2*ans-1;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    freopen("Fractii.inp","r",stdin);
    freopen("Fractii.out","w",stdout);
    cin>>n;
    sang();
    lam();
    return 0;
}