Cod sursa(job #768228)

Utilizator Marius96Marius Gavrilescu Marius96 Data 16 iulie 2012 13:45:40
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 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);
	int n;
	scanf ("%d", &n);

	mu[1]=1;
	int 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 ("%d",r);
	return 0;
}