Cod sursa(job #49877)

Utilizator lorin_bobuBobulisteanu Lorin lorin_bobu Data 6 aprilie 2007 15:26:39
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>

FILE *f=fopen("fractii.in","r"), *g=fopen("fractii.out","w");

long n,s=1;

int prim(int i) {
   int d=2,bun=1;
   if(i%d==0) return 0;
   d=3; while(bun && d<=i/2) {
      if(i%d==0) bun=0;
      d+=2;
   }
   return bun;
}

void calcul(int i) {
   long x=i,d=2,p=i;
   if(x%d==0) { p=p*(d-1)/d; x/=d; }
   d=3;
   while(d<=i) {
      if(x%d==0) {
	 p=p*(d-1)/d; x/=d;
      }
      d+=2;
   }
   s+=p*2;
}

int main() {
   fscanf(f,"%ld",&n);
   for(long i=2;i<=n;i++) {
      if(prim(i)==0) calcul(i);
      else s+=2*i-2;
   }
   fprintf(g,"%ld",s);
   fclose(f);
   fclose(g);
   return 0;
}