Cod sursa(job #2230550)

Utilizator andreistanStan Andrei andreistan Data 10 august 2018 15:50:36
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");

int p[10000], nrp;

bool prim(int x)
{
    //if(x==0 || x==1) return 0;
    if(x == 2)return 1;
    if(x % 2 == 0)return 0;
    for(int d = 3; d * d <= x; d += 2)
        if(x % d == 0)
            return 0;
    return 1;
}

int main()
{
    int N;
    f >> N;
    if(N == 1)
        g << "1";
    else
    {
        int sum = 0;
        for(int i = 2; i <= N; i++)
            if(prim(i))
            {
                p[++nrp] = i;
                sum += i - 1;
                //cout << i - 1 << ' ';
            }
            else
            {
                double prod = i;
                for(int j = 1; p[j]<<1 <= i; j++)
                    if(i % p[j] == 0)
                        prod *= 1 - (double)1 / p[j];
                sum += prod;
                //cout << prod << ' ';
            }
        sum<<=1;
        sum++;
        g<<sum;
    }
    return 0;
}