#include <cmath>
#include <iostream>


void triples()
{
    unsigned found = 0;
    unsigned tests = 0;
    for (unsigned a = 3; a < 99; ++a)
    {
        // only interested in a hypotenuse <= 100
        const unsigned b_limit = std::sqrt(100*100 - (a*a));

        for (unsigned b = a + 1; b <= b_limit; b += 1)
        {
            ++tests;
            double c = std::sqrt(a*a + b*b);

            if (c == int(c))
            {
                ++found;
                std::cout << a << '\t' << b << '\t' << c << '\n';
            }
        }
    }
    std::cout << "Triples found: " << found << '\n';
    std::cout << "Possibilities tested: " << tests << '\n';
}


int main()
{
    triples();
}
