fork download
  1. // floriankirsch.de/c++/tripel.html
  2.  
  3. #include <cmath>
  4. #include <iostream>
  5.  
  6. // assumes a > b
  7. template<typename T>
  8. T ggt(T a, T b)
  9. {
  10. if (b == 0)
  11. return a;
  12. else
  13. return ggt(b, a % b);
  14. }
  15.  
  16. void findPrimitiveTripel(int64_t c)
  17. {
  18. int64_t sqrtc = static_cast<int>(std::sqrt(c));
  19.  
  20. for (int64_t v = 1; v < sqrtc; ++v)
  21. {
  22. for (int64_t u = v + 1; u <= sqrtc; ++u)
  23. {
  24. if (v * v + u * u == c)
  25. {
  26. if (ggt(u, v) == 1 &&
  27. (v + u & 1) == 1)
  28. {
  29. std::cout << u*u - v*v << "² + " << 2*u*v << "² = " << u*u + v*v << \n";
  30. }
  31. }
  32. }
  33. }
  34. }
  35.  
  36. int main() {
  37. for (int c=1; c<100; ++c)
  38. findPrimitiveTripel(c);
  39. return 0;
  40. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
3² + 4² = 5²
5² + 12² = 13²
15² + 8² = 17²
7² + 24² = 25²
21² + 20² = 29²
35² + 12² = 37²
9² + 40² = 41²
45² + 28² = 53²
11² + 60² = 61²
63² + 16² = 65²
33² + 56² = 65²
55² + 48² = 73²
77² + 36² = 85²
13² + 84² = 85²
39² + 80² = 89²
65² + 72² = 97²