// 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;
}
Ly8gZmxvcmlhbmtpcnNjaC5kZS9jKysvdHJpcGVsLmh0bWwKCiNpbmNsdWRlIDxjaHJvbm8+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmJvb2wgaXNUcmlwZWwoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKewoJcmV0dXJuIGEgKiBhICsgYiAqIGIgPT0gYyAqIGM7Cn0KCnZvaWQgZmluZFRyaXBlbDBfVHdvTmVzdGVkTG9vcHMoaW50NjRfdCBjKQp7CiAgICBmb3IgKGludDY0X3QgYSA9IDE7IGEgPCBjOyArK2EpCiAgICB7CiAgICAgICAgZm9yIChpbnQ2NF90IGIgPSBhOyBiIDwgYzsgKytiKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGlzVHJpcGVsKGEsIGIsIGMpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgYSA8PCAiwrIgKyAiIDw8IGIgPDwgIsKyID0gIiA8PCBjIDw8ICLCslxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CglzdGQ6OmNvdXQgPDwgIlB5dGhhZ29yZWFuIHRyaXBlbHMgZm91bmQgaW4gMSBtaWxsaXNlY29uZFxuIjsKCWF1dG8gc3RhcnQgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKCWZvciAoaW50NjRfdCBjPTE7IDsgKytjKQoJewoJICAgIGZpbmRUcmlwZWwwX1R3b05lc3RlZExvb3BzKGMpOwoJCWF1dG8gZHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSAtIHN0YXJ0KTsKCQlpZiAoZHVyYXRpb24uY291bnQoKSA+IDEwMDApCgkJICAgIGJyZWFrOwoJfQoJcmV0dXJuIDA7Cn0=