public class Euler504 {
    private static int gcd(int a, int b) {
        while (b != 0) {
            int t = b;
            b = a % b;
            a = t;
        }
        return a;
    }

    public static void main(String[] args) {
        int m = 100;
        int[][] g = new int[m + 1][m + 1];
        for (int a = 1; a <= m; a++) {
            for (int b = 1; b <= m; b++) {
                g[a][b] = gcd(a, b);
            }
        }

        int max_i = 2 * m * m + 1;
        boolean[] isSquare = new boolean[max_i + 1];
        for (int x = 0; x * x <= max_i; x++) {
            isSquare[x * x] = true;
        }

        long count = 0;
        for (int a = 1; a <= m; a++) {
            for (int b = 1; b <= m; b++) {
                int gab = g[a][b];
                for (int c = 1; c <= m; c++) {
                    int gbc = g[b][c];
                    int ac = a + c;
                    for (int d = 1; d <= m; d++) {
                        int numerator = ac * (b + d) - gab - gbc - g[c][d] - g[d][a];
                        int interior = numerator / 2 + 1;
                        if (isSquare[interior]) {
                            count++;
                        }
                    }
                }
            }
        }

        System.out.println(count);
    }
}
