import java.util.stream.LongStream;

public class Euler404 {
    static long gcd(long a, long b) {
        while (b != 0) {
            long temp = b;
            b = a % b;
            a = temp;
        }
        return Math.abs(a);
    }

    static long fourthRootBound(long limit) {
        long target = 4 * limit;
        long m = (long) Math.pow(target, 0.25) + 4;

        while (m > 0) {
            long p = m * m;
            if (p * p <= target && p * p > 0) {
                break;
            }
            m--;
        }
        while (true) {
            long p = (m + 1) * (m + 1);
            if (p * p <= target && p * p > 0) {
                m++;
            } else {
                break;
            }
        }
        return m + 2;
    }

    static String solve() {
        long limit = 100000000000000000L;
        long mMax = fourthRootBound(limit);

        long total = LongStream.rangeClosed(2, mMax)
                .parallel()
                .map(m -> {
                    long local = 0;
                    long mm = m * m;
                    long nStart = m / 2 + 1;

                    for (long n = nStart; n < m; n++) {
                        if (gcd(m, n) != 1)
                            continue;

                        long nn = n * n;
                        long xRaw = mm - 4 * m * n - nn;
                        long xAbs = Math.abs(xRaw);
                        long yAbs = 2 * (mm + m * n - nn);
                        long w = mm + nn;

                        long g = gcd(xAbs, yAbs);
                        g = gcd(g, w);

                        if (g % 5 == 0)
                            continue;

                        long u = xAbs / g;
                        long v = yAbs / g;
                        if (u < v) {
                            long tmp = u;
                            u = v;
                            v = tmp;
                        }

                        long aPrimitive = (u * v) / 2;
                        if (aPrimitive > limit)
                            continue;

                        local += limit / aPrimitive;
                    }
                    return local;
                })
                .sum();

        return Long.toString(total);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
