// all of that weird prime multiplication above allows for this condensed checkWin method
// The following table is important
// prime
// {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61}
// player
// 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
// row
// 0 0 0 1 1 1 2 2 2 0 0 0 1 1 1 2 2 2
// column
// 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
// number
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// For example, 935 = 5*11*17, corresponding to three Xs in the bottom-left to top-right diagonal