Pagini recente » Cod sursa (job #1167921) | Cod sursa (job #2771289) | Cod sursa (job #419470) | Cod sursa (job #1803170) | Cod sursa (job #982309)
Cod sursa(job #982309)
#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 , num;
for( int i = 2 ; i <= n ; i++ ){
if( V[i] == 0 && i%2 == 1 ){
sol += 2*(i-1);
continue;
}
fi = 1;
t = i;
for( j = 1 ; j <= k && Prim[j]*Prim[j] <= i ; j++ ){
num = Prim[j];
if( t % num == 0 ){
nr = 0;
while( t % num == 0 ){
nr++;
t /= num;
}
fi *= (num - 1)*power(num , nr - 1);
}
}
if( t != 1 )
fi *= (t-1);
sol += 2*fi;
}
sol++;
}
int main(){
f>>n;
Prim[++k] = 2;
for( int j , i = 3 ; i <= n ; i += 2 )
if( V[i] == 0 ){
Prim[++k] = i;
for( j = i+i ; j <= n ; j += i )
V[j] = 1;
}
solve();
g<<sol<<"\n";
return 0;
}