Pagini recente » Cod sursa (job #910508) | Cod sursa (job #1915713) | Cod sursa (job #2157263) | Cod sursa (job #2837877) | Cod sursa (job #2294658)
#include <cstdio>
#define MaxN 1000005
using namespace std;
int Er[MaxN], List[MaxN], i, N, P, d, j;
long long int q, Count;
int main()
{
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
scanf("%d", &N);
i=2;
while(i<=N){
if(Er[i]==0){
Er[i]=1;
d=i*2;
while(d<=N) {Er[d]=1; d+=i;}
List[++P]=i;
}
while(Er[i]==1 && i<=N)++i;}
for(i=2; i<=N; ++i){
d=i; q=1;
for(j=1; d>1; ++j) if(d%List[j]==0){
d/=List[j];
while(d%List[j]==0 && d>1){
q*=List[j];
d/=List[j];
}
q*=(List[j]-1);
}
Count+=2*q;
}
printf("%lld", Count+1);
return 0;
}