Cod sursa(job #52611)

Utilizator znakeuJurba Andrei znakeu Data 19 aprilie 2007 14:01:16
Problema Fractii Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <string.h>
long long v[1000005];
long long prim[100000];

long long ciur(long long n)
{
	long long i,j,p=0;
	for (i=0; i<1000005; i++)
		v[i]=1;
	
	for(i=2; i<=n; i++)
	if (v[i])
	{
		prim[p++]=i;
		v[i]=i-1;
		for (j=i+i; j<=n; j+=i)
			v[j]=0;
	}
	return p;
}

int main()
{
	long long n,i,j,p;
	long long s=0;
	
	FILE *in=fopen("fractii.in","r");
	fscanf(in,"%lld",&n);
	fclose(in);
	
	p=ciur(n);
	for (i=2; i<n/2+1000; i++)
	{
		for (j=0; j<p; j++)
			if (i*prim[j]<=100000)
				if (i%prim[j]==0)
					v[i*prim[j]]=v[i]*prim[j];
				else
					v[i*prim[j]]=v[i]*(prim[j]-1);
			else
				j=p;
	}
	
	for (i=2; i<=n; i++)
		s+=v[i];
	s*=2;
	s++;
	
	FILE *out=fopen("fractii.out","w");
	fprintf(out,"%lld\n",s);
	fclose(out);
	
	return 0;
}