Cod sursa(job #1150871)

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

int p[256];
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; 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=2; i<=N; i++)
            r+=2*euler(i);
	fprintf(fo, "%d", r);
    return 0;
}