Cod sursa(job #2373824)

Utilizator TudorKsanCretu Tudor Andrei TudorKsan Data 7 martie 2019 15:27:03
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
bool c[40001];
int v[100001];
int main()
{
    int n,i,j,k=0,x,p,nr=0;
    f>>n;
    c[1]=c[0]=1;
    for(i=2;i*i<=n;i++)
    {
        if(c[i]==0)
        {
            for(j=2;j*i<=n;j++)
                c[i*j]=1;
        }
    }
    for(i=2;i<=n;i++)
        if(c[i]==0) v[++k]=i;
    for(i=2;i<=n;i++)
    {
        p=i;
        x=i;
        j=1;
        while(v[j]*v[j]<=x && x>1)
        {
            if(x%v[j]==0)
            {
                while(x%v[j]==0) x/=v[j];
                p=p*(v[j]-1)/v[j];
            }
            j++;
        }
        if(x>1) p=p*(x-1)/x;
        nr=nr+p;
    }
    g<<2*nr+1;
}