Pagini recente » Cod sursa (job #147391) | Cod sursa (job #901550) | Cod sursa (job #387174) | Cod sursa (job #1024621) | Cod sursa (job #1897204)
#include <cstdio>
#include <algorithm>
#define MAXN 1000001
using namespace std;
int sieve[MAXN];
bool bad[MAXN];
int main()
{
freopen("mins.in", "r", stdin);
freopen("mins.out", "w", stdout);
int prime, n, m;
long long ans, i;
scanf("%d%d", &n, &m);
n--;
m--;
ans = 1LL*n*m;
if(n > m) swap(n, m);
for(prime=2; prime<=n; ++prime)
if(!sieve[prime]) {
for(i=prime; i<=n; i+=prime)
sieve[i]++;
for(i=1LL*prime*prime; i<=n; i+=prime*prime)
bad[i] = 1; }
for(i=2; i<=n; ++i){
if(bad[i]) continue;
else {
if(sieve[i]&1) ans -= 1LL*(n/i)*(m/i);
else ans += 1LL*(n/i)*(m/i); } }
printf("%lld", ans);
return 0;
}