Cod sursa(job #1150888)

Utilizator accxelAlex Carp accxel Data 23 martie 2014 17:46:40
Problema Fractii Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int p[1000];
int max=2, count;

int notmultofp(int k)
{
    for(int i=0; i<count; i++)
        if(!(k%p[i]))
            return 0;
    return 1;
}
int primes(int k)
{
    int i=max+1;
    max=k;
    for(; i<=k; i++)
        if(notmultofp(i))
        {
            p[count]=i;
            count++;
            if(i==k) return 1;
        }
    if(k<3)
    {
        if(k==2)
        {p[count]=k; count++;}
        return 1;
    }
    return 0;
}

int euler(int k)
{
    if(primes(k))
        return k-1;
    else
    {
        float f=k;
        for(int i=0; i<count; i++)
            if(!(k%p[i]))
                f*=(1-(1/((float)p[i])));
        return ceil(f);
    }
}

int main()
{
    FILE *fi, *fo;
    int N, r=1;
    fi=fopen("fractii.in", "r");
    fo=fopen("fractii.out","w");
    fscanf(fi, "%d", &N);
    if(N!=1)
        for(int i=1; i<=N; i++)
            r+=2*euler(i);
    fprintf(fo, "%d", r);
    return 0;
}