Cod sursa(job #1977418)

Utilizator DumitresculEDumitrescul Eduard DumitresculE Data 5 mai 2017 11:14:59
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
bool x[1001];
int prim[501],nr;
void ciur()
{
    int i,j;
    for(i=2;i<=1001;i++)
    {
        if(x[i]==0)
        {
            nr++;
            prim[nr]=i;
            for(j=i+i;j<=1001;j+=i)
                x[j]=1;
        }
    }
}
int main()
{
    int n,i,p,s=0,j,copie;
    f>>n;
    ciur();
    for(i=1;i<=n;i++)
    {
        p=i;
        copie=i;
        for(j=1;j<=nr and prim[j]*prim[j]<=copie;j++)
        {
            if(copie%prim[j]==0)
            {
                copie/=prim[j];
                p*=(prim[j]-1);
                p/=prim[j];
            }
            while(copie%prim[j]==0)
                copie/=prim[j];
        }
        if(copie>1)
        {
            p*=(copie-1);
            p/=copie;
        }
        s+=p;
    }
    g<<2*s-1;
    return 0;
}