Cod sursa(job #2000310)

Utilizator attack2002Girban Alexandru attack2002 Data 13 iulie 2017 13:06:32
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<iostream>
using namespace std;
bool Primitate(int x)
{
    if(x==1)
    {
        return true;
    }
    if(x==2)
    {
        return true;
    }
    if(x==3)
    {
        return true;
    }
    if(x%2==0)
    {
        return false;
    }
    for(int i=3;i*i<=x;i=i+2)
    {
        if(x%i==0)
        {
            return false;
        }
    }
    return true;
}
//int Phi(int a)
//{
//    int temp(a);
//    if(Primitate(a)==1)
//    {
//        return a-1;
//    }
//    if(a%2==0)
//    {
//        temp = a / 2;
//    }
//    for(int p=3;2*p<=a;++p)
//    {
//        if(a%p==0 && Primitate(p)==1)
//        {
//            temp = temp * (p-1) / p;
//        }
//    }
//    return temp;
//}
int main()
{
    //ifstream read("fractii.in");
    //ofstream write("fractii.out");
    int N;
    cin>>N;
    long long int r(0);
    int Phi[N+1];
    for (int i=0 ; i<=N ; ++i)
    {
        Phi[i]=i;
    }
    for( int p=2 ; p<=N ; ++p )
    {
        if(Primitate(p))
        {
            for(int i=p ; i<=N ; i=i+p)
            {
                Phi[i]=Phi[i] * (p-1) / p;
            }
        }
    }
    for(int i=2 ; i<=N ; ++i)
    {
        r = r + Phi[i];
    }
    cout << 2 * r + 1;
}