Cod sursa(job #2330590)

Utilizator PatrascuAdrian1Patrascu Adrian Octavian PatrascuAdrian1 Data 28 ianuarie 2019 17:10:10
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>

#define MAX 1000001
using namespace std;

ifstream f("fractii.in");
ofstream g("fractii.out");

int n,a[MAX],ciur[MAX];
long long s;

int euler(int n);

int main()
{
    f>>n;
    a[0]=a[1]=ciur[1]=1;
    for(int i=1; i<=MAX; ++i)
        ciur[i]=i;
    for(int i=2; i*i<=MAX; ++i)
    {
        if(a[i]==1)
            continue;
        ciur[i]=i-1;
        for(int j=2*i; j<=MAX; j+=i)
            a[j]=1,ciur[j]=(ciur[j]/i)*(i-1);
    }
    for(int i=1; i<=n; ++i)
        s+=ciur[i];
    g<<2*s-1;
    return 0;
}

int euler(int n)
{
    int cn=n,d=2;
    while(n>1)
    {
        if(n%d==0)
        {
            cn=(cn/d)*(d-1);
            while(n%d==0)
                n/=d;
        }
        if(d==2)
            d++;
        else
            d+=2;
        if(d*d>n)
            d=n;
    }
    return cn;
}