Pagini recente » Cod sursa (job #7512) | Cod sursa (job #2457613) | Cod sursa (job #1100200) | Cod sursa (job #2180875) | Cod sursa (job #1484068)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n, ct, ok, nr;
long long sum;
int p[200], f[30];
bitset <1010> prim;
void ciur(){
p[++ct]=2;
for(int i=3;i<=1005;i+=2){
if(!prim[i]){
p[++ct]=i;
for(int j=i*i;j<=1005;j+=i+i) prim[j]=1;
}
}
}
int phi(int k){
int u=k;
ok=1;
nr=0;
for(int i=1;i<=ct && ok;++i){
if(k%p[i]==0){
f[++nr]=p[i];
while(k%p[i]==0) k/=p[i];
}
if(k==1) ok=0;
}
if(k>1) f[++nr]=k;
for(int i=1;i<=nr;++i){
u/=f[i];
u*=(f[i]-1);
}
return u;
}
int main(){
fin>>n;
ciur();
for(int i=2;i<=n;++i){
sum+=phi(i);
}
sum*=2;
++sum;
fout<<sum;
return 0;
}