Cod sursa(job #48366)

Utilizator razyelxrazyelx razyelx Data 4 aprilie 2007 18:34:04
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>
#include <math.h>
int main(){
	long long n,i,s2=0,s=1,ok,d,p,aux;
	FILE*f=fopen("fractii.in", "r");
	FILE*g=fopen("fractii.out", "w");
	fscanf(f,"%lld",&n);
	for(i=2;i<=n;i++){
		d=2;ok=0;s2=1,aux=i;
		while(d<=(long)sqrt(aux)&&!ok)
			if(i%d==0){
				ok=1;
				while(aux%d==0)	aux/=d;
			}else d++;
		if(ok){
			d=2;aux=i;
			while(aux>1){
				p=0;ok=0;
				while(aux%d==0){aux/=d;p++;ok=1;}
				if(ok==1)s2*=(d-1)*pow(d,p-1);
				d++;
			}
			s+=2*s2;
		}else
			s+=2*(i-1);
	}
	fprintf(g,"%lld",s);
	fclose(f);
	fclose(g);
	return 0;
}