Cod sursa(job #1150907)

Utilizator accxelAlex Carp accxel Data 23 martie 2014 18:06:49
Problema Fractii Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int p[1000000];
int count;

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

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);
    fclose(fi);
    fclose(fo);
    return 0;
}