Cod sursa(job #1150884)

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

int p[256];
int max=1, count;

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

int primes(int k)
{
    for(int i=max+1; i<=k; i++)
    {
        if(notmultofp(max+1))
        {
            p[count]=i;
            count++;
            if(k==i)
                return 1;
        }
    }
    max++;
    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=2; i<=N; i++)
            r+=2*euler(i);
	fprintf(fo, "%d", r);
    return 0;
}