Cod sursa(job #1481408)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 4 septembrie 2015 13:33:27
Problema Fractii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <cmath>

using namespace std;

int vaz[1000100];
int v[1000100];

int main()
{
    freopen("fractii.in","r",stdin);
    freopen("fractii.out","w",stdout);
    long long sol=0;
    int n,j,i1=0;
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
        if(vaz[i]==0)
        {
            v[++i1]=i;
            for(long long j=1LL*i*i;j<=n;j+=i) vaz[j]=1;
        }
    for(int i=2;i<=n;i++)
    {
        int lim=sqrt(i),s=i,a=i;
        for(int j=1;v[j]<=lim && j<=i1;j++)
            if(a%v[j]==0)
            {
                s=(s/v[j])*(v[j]-1);
                while(a%v[j]==0) a/=v[j];
            }
        if(a>1) s=(s/a)*(a-1);
        sol=sol+s;
    }
    sol=sol*2;
    sol++;
    printf("%lld",sol);
    return 0;
}