Cod sursa(job #1651528)

Utilizator Andreiii500Andrei Puiu Andreiii500 Data 13 martie 2016 14:59:01
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<iostream>
#include<fstream>
using namespace std;

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

const int N = 1000000;
char neprim[1000001];
int v[78499];
int n;

int main()
{
    long long a,b,sol;
    int i,j,m;

    in>>n;

    m = 0;
    neprim[1] = 1;

    for(i=2; i*i<=N; ++i)
        for(j=i*i; j<=N; j+=i)
            neprim[j] = 1;

    for(i=1; i<=N; ++i)
        if(neprim[i] == 0)
            v[++m] = i;

    sol = 0;
    for(i=2; i<=n; ++i)
    {
        a = i;
        b = 1;

        j=1;
        while(v[j] <= i && j<=m)
        {
            if(i % v[j] == 0)
            {
                a *= v[j]-1;
                b *= v[j];
            }
            ++j;
        }
        ///out<<"a="<<a<<" b="<<b<<"\n";
        ///out<<"i="<<i<<"  adun="<<a/b*2<<"\n";
        sol += (a/b) * 2;
    }
    ++sol;

    out<<sol;

    return 0;
}