Cod sursa(job #122399)

Utilizator marinMari n marin Data 12 ianuarie 2008 10:15:39
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define DIM 100001
char v[DIM];
long long p[DIM];

long long n,i,j,k,pp,nn,sum,x;

int main(){
  FILE *f = fopen("fractii.in","r");
  fscanf(f,"%lld",&n);
//  scanf("%d",&n);
  fclose(f);
  for (i=1;i<=n;i++)
    v[i]=0;
  for (i=2;i<=n;i++)
    for (j=2*i;j<=n;j+=i)
      v[j]=1;

  k=0;
  for (i=2;i<=n;i++)
    if (v[i]==0)
      p[++k]=i;
//      printf("%d ",i);
//  printf("\n");

  sum=0;
  for (x=1;x<=n;x++){
    pp=1;
    nn=x;
    for (i=1;(p[i]<=x)&&(i<=k);i++)
      if (x%p[i]==0) {
	nn/=p[i];
	pp*=(p[i]-1);
      }
    pp*=nn;
    sum+=pp;
  }
  sum=sum*2-1;
  FILE *g = fopen("fractii.out","w");
  fprintf(g,"%lld",sum);
  fclose(g);
  return 0;
}