Cod sursa(job #1646984)

Utilizator bercean.bogdanBogdan-Alexandru Bercean bercean.bogdan Data 10 martie 2016 18:33:49
Problema Fractii Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <stdlib.h>

int totient(int x)
{
    int i;
    float N=x;
    for(i=2;i*i<=x;i++)
    {
        if(!(x%i))
        {
            while(!(x%i))
            {
                x/=i;
            }
            N*=(1.0-(1.0/(float)i));
        }
    }

    if(x>1) N*=(1.0-(1.0/(float) x));

    return N;
}

int fractii(int x)
{
    int i,N=0;
    for(i=2;i<=x;i++)
    {
        N+=totient(i);
    }
    return N*2+1;
}

int main()
{
    int x;

    FILE * fp=fopen("fractii.in","r");
    FILE * g=fopen("fractii.out","w");

    while(fscanf(fp,"%d\n",&x)!=EOF)
    {
        fprintf(g,"%d\n",fractii(x));
    }

    return 0;
}