Cod sursa(job #1677635)

Utilizator leopop29Pop Leonard leopop29 Data 6 aprilie 2016 18:12:00
Problema Fractii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <bitset>
#include <math.h>
#define NM 1000005

using namespace std;

bitset<NM> pr;

void ciur()
{
    pr[1] = 1;
    for(int i = 2; i < 1000; ++i)
        if(!pr[i])
            for(int j = i*i; j < NM-5; j += i)
                pr[j] = 1;
}

int main()
{
    ifstream f("fractii.in");
    ofstream g("fractii.out");
    long long nr = 0;
    int n;

    ciur();
    f >> n;

    for(int i = 2; i <= n; ++i)
    {
        long long r = 1;

        for(int c = 2; c <= i; ++c)
            if(!pr[c])
            {
                int pw = 0, rp = i;
                while(!(rp%c))
                {
                    rp /= c;
                    ++pw;
                }
                if(pw)
                    r *= (c-1)*pow(c, pw-1);
            }
        nr += r;
    }

    g << nr*2+1;
}