Cod sursa(job #29832)

Utilizator vlad2179Popescu Vlad Alexandru vlad2179 Data 10 martie 2007 18:08:35
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <string.h>
#include <math.h>
unsigned long long prim[1000000],n;
void prime(){unsigned long long i;
 for(i=2;i<=n;i++)prim[i]=1;
 for(i=2;i*i<=n;i++){
  if(prim[i]){int j=2;
   while(i*j<=n){
    prim[i*j]=0;
    j++;
   }
  }
 }
}
unsigned long long cate(unsigned long long x){
 unsigned long long d=2,divizor,exp=0;int stop=0;
 if(prim[x]) return x-1;
 else {
  for(d=2;d*d<=n && !stop;d++){
   if(x%d==0){ divizor=d;stop=1;}
  }
  while(x%divizor==0){
   exp++;x/=divizor;}
 }
return (divizor-1)*pow(divizor,exp-1);
}
int main(){unsigned long long i,tot=0;
 FILE *f=fopen("fractii.in","rt");
 FILE *g=fopen("fractii.out","wt");
 fscanf(f,"%lld",&n);
 prime();
 for(i=2;i<=n;i++){
  tot+=2*cate(i)+1;
 }
 fprintf(g,"%lld",tot);
 fclose(g);
 return 0;
}