Cod sursa(job #39090)

Utilizator razvi9Jurca Razvan razvi9 Data 26 martie 2007 13:36:35
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
#include<string.h>
#include<math.h>
int n,i,j,k;
long long nr;
char prim[1001];
int tot(int n)
{int nr=n;
 if(prim[n]) return n-1;
 if(sqrt(n)==(int)sqrt(n)) return sqrt(n)*tot(sqrt(n));
 for(int i=2;i<=n;i++)
  if(prim[i]&&n%i==0) {nr=nr-nr/i;n=n/i; }
 return nr;}
int main()
{freopen("fractii.in","r",stdin);
 freopen("fractii.out","w",stdout);
 scanf("%d",&n);
 nr=1;
 memset(prim,1,n+1);
 for(i=2;i<=n;i++)
  if(prim[i])
  for(j=2*i;j<=n;j=j+i)
   prim[j]=0;
 nr=1;
 for(i=2;i<=n;i++)
  nr=nr+2*tot(i);
 printf("%lld",nr);
 fclose(stdout);
 return 0;}