Pagini recente » Cod sursa (job #1941347) | Cod sursa (job #1645215) | Cod sursa (job #672146) | Cod sursa (job #2838972) | Cod sursa (job #1843871)
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
int n;
bool a[1000001];
void ciur(int n){
for(int i=2;i<=n/2;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,prevpower=0;
while(q!=1){
if(q%i==0){
prevpower+=1;
q/=i;
if(q==1){
p*=(i-1)*(pow(i,(prevpower-1)));
}
}else{
if(prevpower!=0){
p*=(i-1)*(pow(i,(prevpower-1)));
}
i++;
prevpower=0;
}
}
return p;
}
int main(){
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
scanf("%d",&n);
ciur(n+1);
long long x,x2=0;
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);
}