Pagini recente » Cod sursa (job #2922304) | Cod sursa (job #1606455) | Cod sursa (job #1096485) | Cod sursa (job #2920681) | Cod sursa (job #2667374)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
ll n,k,i,j;
ll prim[1000005];
vector<ll> v[1000006];
ll lgp(ll x,ll y){
if(y==0) return 1;
if(y==1) return x;
ll t=lgp(x,y/2);
if(y%2==1) return t*t*x;
else return t*t;
}
ll euler(ll x){
ll ans=1;
for(ll q=0;q<v[x].size();q++){
ll power=1,e=v[x][q];
//cout<<e<<" ";
while(x%(e*v[x][q])==0) power++,e*=v[x][q];
ans*=lgp(v[x][q],power-1)*(v[x][q]-1);
}
return ans;
}
int main(){
for(i=2;i<=1e6;i++){
if(prim[i]==0){
for(j=i+i;j<=1e6;j+=i){
prim[j]=i;
v[j].pb(i);
}
v[i].pb(i);
}
}
fin>>n;
ll sum=0;
for(i=2;i<=n;i++){
sum+=euler(i);
//cout<<euler(i)<<"\n";
}
sum=sum*2+1;
fout<<sum;
return 0;
}