Cod sursa(job #2600041)

Utilizator PMI13Pop Marius Ionut PMI13 Data 11 aprilie 2020 21:50:03
Problema Fractii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>

void Indicator_Euler (long long *I , long long n)
{
    for(long long i = 2 ; i <= n ; i++)
        I[i] = i;
    for(long long i = 2 ; i <= n ; i++)
    if(I[i] == i)
        {
            I[i]--;
            for(long long j = 2 ; j * i <= n ; j++)
                I[i * j] = I[i * j] / i * (i - 1);
        }
}

void fractii (long long n)
{
    long long *I = (long long *) calloc(n + 5 , sizeof(long long));
    unsigned long long p = 1;

    Indicator_Euler(I , n);

    for(int i = 2 ; i <= n ; i++)
        p += (unsigned long long) I[i] * 2;

    FILE *fi = fopen("fractii.out" , "w");
    fprintf(fi , "%llu" , p);
    fclose(fi);
}

int main()
{
    long long n;

    FILE *fp = fopen("fractii.in" , "r");
    fscanf(fp , "%lld" , &n);
    fclose(fp);

    fractii(n);

    return 0;
}