Pagini recente » Cod sursa (job #1460332) | Cod sursa (job #2465394) | Cod sursa (job #2237506) | Cod sursa (job #1557955) | Cod sursa (job #88301)
Cod sursa(job #88301)
#include <cstdio>
#include <cstdlib>
#include <cstring>
const int N = 1000000;
const int NP = 78498;
int prime[NP], np = 0;
int d[N+1];
void ciur() {
const int MX = 1000000;
bool* pr = (bool*) malloc(sizeof(bool)*(MX+1)); memset(pr,true,sizeof(bool)*(MX-1));
pr[0] = pr[1] = false;
for (int i = 2; i <= MX; ++i) {
if (pr[i]) {
for (int j = 2; i*j <= MX; ++j) pr[i*j] = false;
prime[np++] = i;
}
}
}
int phi ( int a ) {
int r = a;
for (int i = 0; prime[i] <= a && i < np; ++i)
if (a % prime[i] == 0) {
r /= prime[i];
r *= prime[i]-1;
}
return r;
}
int main() {
freopen("fractii.in","rt",stdin);
freopen("fractii.out","wt",stdout);
int n = 0;
scanf("%d",&n);
ciur();
d[1] = 1;
for (int i = 2; i <= n; ++i) d[i] = d[i-1] + 2*phi(i);
printf("%d\n",d[n]);
return 0;
}