Pagini recente » Cod sursa (job #911622) | Cod sursa (job #2204642) | Cod sursa (job #1883036) | Cod sursa (job #2393618) | Cod sursa (job #54030)
Cod sursa(job #54030)
#include<stdio.h>
#define MAXN 100005
#define MAXP 1000005
int p[MAXP];
long n,q,nr=1,a[MAXN];
long long b[MAXP],s;
FILE *f,*g;
void prim()
{int i, j;
for (i = 1; ((i * i) << 1) + (i << 1) <= n; i += 1) {
if ((p[i >> 3] & (1 << (i & 7))) == 0) {
for (j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1) {
p[j >> 3] |= (1 << (j & 7));
}
}
}
nr=1;
for (i = 1; a[nr]<=n; ++i)
if ((p[i >> 3] & (1 << (i & 7))) == 0)
{nr++;
a[nr]=2*i+1;}
}
int main()
{long i,j;
f=fopen("fractii.in","r");
g=fopen("fractii.out","w");
fscanf(f,"%ld",&n);
a[1]=2;b[2]=1;
prim();
for(i=2;i<=n;i++)
b[i]=i;
for(i=1;i<=nr;i++)
for(j=a[i];j<=n;j+=a[i])
{b[j]/=a[i];
b[j]*=a[i]-1;}
for(i=1;i<=n;i++)
s+=b[i];
fprintf(g,"%lld\n",2*s+1);
fclose(f);
fclose(g);
return 0;}