// floriankirsch.de/c++/tripel.html

#include <chrono>
#include <iostream>

bool isTripel(int64_t a, int64_t b, int64_t c)
{
	return a * a + b * b == c * c;
}

void findTripel0_TwoNestedLoops(int64_t c)
{
    for (int64_t a = 1; a < c; ++a)
    {
        for (int64_t b = a; b < c; ++b)
        {
            if (isTripel(a, b, c))
            {
                std::cout << a << "² + " << b << "² = " << c << "²\n";
            }
        }
    }
}

int main()
{
	std::cout << "Pythagorean tripels found in 1 millisecond\n";
	auto start = std::chrono::steady_clock::now();
	for (int64_t c=1; ; ++c)
	{
	    findTripel0_TwoNestedLoops(c);
		auto duration = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() - start);
		if (duration.count() > 1000)
		    break;
	}
	return 0;
}