Pagini recente » Cod sursa (job #419972) | Cod sursa (job #285656) | Cod sursa (job #702149) | Cod sursa (job #1060437) | Cod sursa (job #328842)
Cod sursa(job #328842)
#include<stdio.h>
int v[1000001];
int main(){
int n;
long long i,rez,x,y,nr,p;
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
for (i=2;i<=n/2;i++)
if(!v[i]){
p=i;
while(p<n){
p=p+i;
if(p<=n)
v[p]=i;
}
}
nr=0;
for(i=2;i<=n;i++)
if(!v[i])
nr+=i-1;
else{
x=i;
rez=i;
while(v[x]){
y=v[x];
rez=rez/v[x]*(v[x]-1);
while(y==v[x])
x=x/v[x];
if(x==y)
x=1;
else
if(!v[x])
rez=rez/x*(x-1);
}
nr+=rez;
}
printf("%lld",2*nr+1);
return 0;
}