Cod sursa(job #768229)

Utilizator Marius96Marius Gavrilescu Marius96 Data 16 iulie 2012 13:47:29
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<cstdio>
#define MULT 10000001
signed char mu[MULT+5];
bool        cp[MULT+5];

int main()
{
	freopen ("fractii.in","r",stdin);
	freopen ("fractii.out","w",stdout);
	long long n;
	scanf ("%lld", &n);

	mu[1]=1;
	long long r=(n)*(n+1)-1;
	for(int i=2;i<=n;i++){
		if(!cp[i]){//i is prime
			mu[i]=-1;//prime numbers are square-free and have 1 prime factor
			int ip=i*i;
			for(int j=2*i;j<=n;j+=i){
				cp[j]=1;
				if(j%ip)
					mu[j]=-mu[j/i];
				else
					mu[j]=0;
			}
		}
		r+=mu[i]*(n/i)*(n/i+1);
	}

	printf ("%lld",r);
	return 0;
}