#include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long ll gcd( ll u, ll v ) { while( u > 0 ){ if( u < v ){ ll t = u; u = v; v = t; } if( v == 0 ) return u; u %= v; } return v; } int main( void ) { FILE *in = fopen( "triangle.in", "r" ); for( int C = 1; ; C ++ ){ int M, N; fscanf( in, "%d%d", &M, &N ); if( M == 0 && N == 0 ) break; long long z = (M + 1) * (N + 1); // 2^20 long long base = z * (z - 1) * (z - 2) / 6; ll remove = 0; for( ll m = 0; m <= M; m ++ ){ for( ll n = 0; n <= N; n ++ ){ if( m == 0 && n == 0 ) continue; ll g = gcd( m, n ); if( m == 0 || n == 0 ) remove += (M - m + 1LL) * (N - n + 1LL) * (g - 1); else remove += (M - m + 1LL) * (N - n + 1LL) * (g - 1) * 2; } } cout << "Case " << C << ": " << (base - remove) << endl; } }