/**********
author:chanjun2016
email:15755396353@163.com
***********/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
#define INF = 0x3f3f3f3f
const int maxn = 300;
int GCD[maxn + 5][maxn + 5];
int gcd(int x,int y){
if (GCD[x][y] > 0){
return GCD[x][y];
}
if (!y){
return GCD[x][y] = x;
}
return GCD[x][y] = gcd(y, x % y);
}
int main(){
int n,m;
while (scanf("%d%d",&n,&m),n && m){
long long ans = 0;
for (int i = 1; i < n; ++i){
for (int j = 1; j < m; ++j){
if (gcd(i,j) == 1){
ans += (n - i) * (m - j);
int c = max(0, n - 2 * i) * max(0 , m - 2 * j);
ans -= c;
}
}
}
printf("%lld\n", ans * 2);
}
return 0;
}
uva1393
最新推荐文章于 2018-10-05 11:15:39 发布