Pagini recente » Cod sursa (job #2291386) | Cod sursa (job #2712627) | Cod sursa (job #1054929) | Cod sursa (job #563130) | Cod sursa (job #1843825)
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
int n;
bool a[1000001];
int b[1001];
long long x,x2;
void ciur(int n){
for(int i=2;i<=n;i++){
if(!a[i]){
for(int j=2*i;j<=n;j+=i){
a[j]=1;
}
}
}
}
int totient(int q){
int i=2,p=1;
while(q!=1){
if(q%i==0){
b[i]+=1;
q/=i;
}else i++;
}
for(int k=2;k<=i;k++){
if(b[k]){
p*=(k-1)*(pow(k,(b[k]-1)));
}
}
memset(b, 0, sizeof(b));
return p;
}
int main(){
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
scanf("%d",&n);
ciur(n+1);
x=n+n-1;
for(int i=2;i<=n;i++){
if(!a[i]){
x2+=i-2;
}else{
x2+=totient(i)-1;
}
}
x+=2*x2;
printf("%d",x);
}