Cod sursa(job #50314)

Utilizator lorin_bobuBobulisteanu Lorin lorin_bobu Data 7 aprilie 2007 14:26:00
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>

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

long long n,s=1;
char v[1000000];

void prim(int i) {
   long long d=2,bun=1;
   if(i%d==0) bun=0;
   d=3; while(bun && d<=i/2) {
      if(i%d==0) bun=0;
      d+=2;
   }
   if(i==2) bun=1;
   v[i]=bun;
}

void calcul(long long i) {
   if(v[i]==1) s+=2*i-2;
   else {
      long long p=i;
      for(long j=2;j<i;j++)
	 if(v[j]==1 && i%j==0) p=p*(j-1)/j;
      s+=2*p;
   }
}

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