Mai intai trebuie sa te autentifici.
Cod sursa(job #52183)
Utilizator | Data | 18 aprilie 2007 00:40:57 | |
---|---|---|---|
Problema | Fractii | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <stdio.h>
#include <string.h>
int v[400000];
int prim[400000];
long long ciur(int n)
{
long long i,j,p=0;
memset(v,1,400000);
v[0]=0; v[1]=1;
for(i=2; i<=n; i++)
if (v[i])
{
prim[p++]=i;
v[i]=i-1;
for (j=i+i; j<=n; j+=i)
v[j]=0;
}
return p;
}
int main()
{
long long n,s=0,i,j,p;
FILE *in=fopen("fractii.in","r");
fscanf(in,"%lld",&n);
fclose(in);
p=ciur(n);
for (i=2; i<n/2+1; i++)
{
for (j=0; j<p; j++)
if (i*prim[j]<=n)
if (i%prim[j]==0)
v[i*prim[j]]=v[i]*prim[j];
else
v[i*prim[j]]=v[i]*(prim[j]-1);
}
for (i=2; i<=n; i++)
s+=v[i];
s*=2;
s++;
FILE *out=fopen("fractii.out","w");
fprintf(out,"%lld\n",s);
fclose(out);
return 0;
}