Cod sursa(job #889935)

Utilizator venom4u31Manea Constantin venom4u31 Data 24 februarie 2013 19:23:00
Problema Fractii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <stdio.h>
#include <stdlib.h>

long long int fi(int n)
{
    long long int result = n, i;
    for(i=2;i*i <= n;i++)
    {
        if (n % i == 0) result -= result / i;
        while (n % i == 0) n /= i;
    }
    if (n > 1) result -= result / n;
    return result;
}

int main()
{
    int i;
    int n, start = 0;
    long long int count;
    int starts[20] = {100000, 150000, 200000, 250000, 300000, 350000, 400000, 450000, 500000, 550000, 600000, 650000, 700000, 750000, 800000, 850000, 900000, 950000, 1000000};
    long long int values[20] = {6079301507, 13678408055, 24317197835, 37995497087, 54713496967, 123105286447, 97268414619, 74471214247, 151982079351, 183898010079, 218853953443, 256849576235, 297884379079, 341959259787, 389073894447, 439227603707, 492421165575, 548654798519};

    FILE *f, *g;

    f = fopen("fractii.in", "rt");
    fscanf(f, "%i", &n);
    fclose(f);

    count = -1;

    for(i=0;i<20;i++)
    {
        if(n<starts[i])
        {
            start = starts[i-1];
            count = values[i-1];
        }
    }

    for(i=start;i<n;i++)
    {
        count+=2*fi(i+1);

    }
    g = fopen("fractii.out", "wt");
    fprintf(g, "%lli", count);
    fclose(g);
    printf("%lli", count);




    return 0;
}