Pagini recente » Cod sursa (job #309361) | Cod sursa (job #1426777) | Cod sursa (job #2032422) | Cod sursa (job #485211) | Cod sursa (job #2502229)
#include <cstdio>
#include <algorithm>
int divizori[1000005], v[1000005];
int main() {
freopen ("mins.in", "r", stdin);
freopen ("mins.out", "w", stdout);
int n, m, i;
long long x, j;
scanf ("%d%d", &n, &m);
m --;
n --;
if (n > m)
{ std::swap (n, m); }
for (i = 2; i <= n; i ++) {
if (!divizori[i]) {
for (j = i; j <= n; j += i)
{ divizori[j] ++; }
for (j = 1LL * i * i; j <= n; j += i * i)
{ v[j] = 1; }
}
}
x = 1LL * n * m;
for (i = 2; i <= n; i ++) {
if (!v[i]) {
if (divizori[i] % 2)
{ x -= 1LL * (n / i) * (m / i); }
else
{ x += 1LL * (n / i) * (m / i); }
}
}
printf ("%lld", x);
return 0;
}