Pagini recente » Cod sursa (job #2035343) | Cod sursa (job #1114392) | Cod sursa (job #1472770) | Rating Cosmina Rebeca (Rose) | Cod sursa (job #476694)
Cod sursa(job #476694)
#include <stdio.h>
#include <bitset>
using namespace std;
#define maxN 1000100
bitset <maxN> Prim;
int N, exp[maxN], tot[maxN];
int pow (int number, int exp) {
if (exp == 0)
return 1;
if (exp == 1)
return number;
int x = pow(number, exp / 2);
x *= x;
return exp % 2 == 1 ? x * number : x;
}
int main () {
int i, x, j, k, product;
long long sum = 0;
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
scanf("%d", &N);
Prim.set();
tot[1] = 1;
for (i = 2; i <= N; i += 2) {
Prim[i] = false;
if (i % 4 == 0)
tot[i] = tot[i / 2] * 2;
else
tot[i] = 1;
}
for (i = 3; i <= N; ++ i)
if (Prim[i]) {
for (j = i; j <= N; j += i) {
if (1LL * j % (1LL * i * i) == 0)
tot[j] = tot[j / i] * i;
else
tot[j] = tot[j / i] * (i - 1);
Prim[j] = false;
}
}
for (i = 2; i <= N; ++ i)
sum += tot[i];
printf("%lld\n", 2LL * sum + 1);
}