Cod sursa(job #27119)

Utilizator andrei.12Andrei Parvu andrei.12 Data 6 martie 2007 09:28:10
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
using namespace std;
#include<stdio.h>
int main(){
	FILE*f=fopen("fractii.in", "r");
	FILE*g=fopen("fractii.out", "w");
	int n, ok, i, j, ciur[1000000], v[1000], pr, k, r, t, w[100000], nr, s, a;
	long long suma;
	fscanf(f,"%lld", &t);
	n=t;
	suma=0;
	for (j=2;j<=n;j++)
		ciur[j]=1;
	for (j=2;j*j<=n;j++)
		if (ciur[j]==1){
			k=2;
			while (j*k<=n){
				ciur[j*k]=0;
				k++;
			}
		}
	nr=0;
	for (i=2;i<=n;i++)
		if (ciur[i]==1) { w[nr]=i; nr++;}
	for (i=2;i<=n;i++){
		ok=0;
		s=0;
		for (j=0;j<nr&&s==0;j++){
			a=w[j];
			if (a>i) s=1;
			if (i%a==0){ v[ok]=a; ok++;}
		}
		pr=1;
		r=i;
		for (j=0;j<ok;j++){
			r=r/v[j];
			pr=pr*(v[j]-1);
		}
		suma=suma+pr*r;
	}
	fprintf(g,"%lld\n", 2*suma+1);
	fclose(f);
	fclose(g);
	return 0;
}