Cod sursa(job #52528)

Utilizator MirageRobert Sandu Mirage Data 19 aprilie 2007 10:29:05
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<stdio.h>
#include<string.h>
int main () {
	int n,i,j,p;
	char c[1000001];
	long long s=0;
	FILE *in=fopen("fractii.in","r"), *out=fopen("fractii.out","w");
	fscanf(in,"%d",&n);
	memset(c,1,(n+1)*sizeof(c[0]));
	c[0]=0;
	c[1]=0;
	for(i=2;i<=n;i++)
		if(c[i])
			for(j=i+i;j<=n;j+=i)
				c[j]=0;
	for(i=2;i<=n;i++){
		if(c[i])
			s=s+i-1;
		else{
			p=i;
			for(j=2;j+j<=i;j++)
				if(c[j]&&i%j==0)
					p=(p/j)*(j-1);
			s+=p;
		}
	}
	s=1+2*s;
	fprintf(out,"%lld\n",s);
	fclose(in);
	fclose(out);
	return 0;
}