Pagini recente » Monitorul de evaluare | Cod sursa (job #3304498) | Cod sursa (job #3320903) | Cod sursa (job #2187899) | Cod sursa (job #1104517)
#include <stdio.h>
bool flag;
int desc(int x) {
int res = 0;
flag = 1;
for (int d = 2; d * d <= x; ++d) {
int pw = 0;
while (x % d == 0) {
x /= d;
++pw;
}
if (pw > 1) {
flag = 0;
return 0;
}
res += pw;
}
if (x > 1)
++res;
return res;
}
int main() {
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
int n;
scanf("%d", &n);
long long tot = 1LL * n * n;
for (int i = 2; i <= n; ++i)
if (desc(i) % 2 && flag)
tot -= 1LL * (n / i) * (n / i);
else if (flag)
tot += 1LL * (n / i) * (n / i);
printf("%lld", tot);
return 0;
}