Pagini recente » Cod sursa (job #3175124) | Cod sursa (job #239002) | Cod sursa (job #755277) | Cod sursa (job #1628835) | Cod sursa (job #982303)
Cod sursa(job #982303)
#include<fstream>
#include<math.h>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
int n , k , rad;
long long sol;
bool V[1000000];
int Prim[100000];
int power( int a , int b ){
if(b==0)
return 1;
if( b%2 == 0 ){
int rez = power(a , b/2);
return rez*rez;
}
else{
int rez = power(a , b/2);
return rez*rez*a;
}
}
void solve(){
int j , fi , t , nr;
for( int i = 1 ; i <= n ; i++ ){
fi = 1;
t = i;
for( j = 1 ; j <= k && Prim[j]*Prim[j] <= i ; j++ ){
if( t % Prim[j] == 0 ){
nr = 0;
while( t % Prim[j] == 0 ){
nr++;
t /= Prim[j];
}
fi *= (Prim[j] - 1)*power(Prim[j] , nr - 1);
}
}
if( t != 1 )
fi *= (t-1);
sol += 2*fi;
}
sol--;
}
int main(){
f>>n;
Prim[++k] = 2;
rad = (int)(sqrt(n) + 1);
for( int i = 3 ; i <= rad ; i += 2 )
if( V[i] == 0 ){
Prim[++k] = i;
for( int j = i+i ; j <= rad ; j += i )
V[j] = 1;
}
solve();
g<<sol<<"\n";
return 0;
}