Cod sursa(job #187675)

Utilizator cotofanaCotofana Cristian cotofana Data 5 mai 2008 01:25:51
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>

int n, nr;

void cit()
{
        FILE *f=fopen("fractii.in", "r");
        fscanf(f, "%d", &n);
        fclose(f);
}

int prim(int nr1)
{
        int i;
        for (i=2; i<=nr1/2; i++)
                if (!(nr1%i)) return 0;
        return 1;
}

int d(int n)
{
        int i, put, e=1, t, j;
        if (prim(n)) return n-1;
        for (i=2; i<=n; i++)
        {
                put=0;
                if (!(n%i))
                {
                        if (prim(i))
                                while (!(n%i))
                                {
                                        put++;
                                        n/=i;
                                }
                t=1;
                for (j=0; j<put-1; j++) t*=i;
                e*=t*i-t;
                }
        }
        return e;
}

void fct()
{
        int i;
        nr=1;
        for (i=2; i<=n; i++)
        {
                nr+=2*d(i);
        }
}

void tip()
{
        FILE *f=fopen("fractii.out", "w");
        fprintf(f, "%d\n", nr);
        fclose(f);
}

int main()
{
        cit();
        fct();
        tip();
        return 0;
}