Cod sursa(job #1356040)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 23 februarie 2015 09:38:40
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <cstdio>
#define Nmax 1000000
using namespace std;

ofstream g("fractii.out");

long n,i,j,nr,p[100005],nrp,ciur[1000006];
long nrdiv(long x)
{
    long nr=0,i=1,nrd=1;
    if (ciur[x]==0)
        return 0;
    while (x>1)
    {
        nr=0;
        while (x%p[i]==0)
        {
            x/=p[i];
            nr++;
        }
        nrd*=(nr+1);
        i++;
    }
    return nrd-2;
}
int main()
{
    freopen("fractii.in","r",stdin);
    scanf("%ld",&n);

    ciur[0]=ciur[1]=1;
    for (i=2;i*i<=Nmax;i++)
        if (ciur[i]==0)
            for (j=i*i;j<=Nmax;j+=i)
                ciur[j]=1;

    for (i=2;i<=Nmax;i++)
        if (ciur[i]==0)
        {
            nrp++;
            p[nrp]=i;
        }

    nr+=n;
    for (i=2;i<=n;i++)
        nr+=n*(i-1-nrdiv(i))/i;

    g<<nr;


    g.close();
    return 0;
}