Special Pythagorean triplet
A Pythagorean triplet is a set of three natural numbers, a b
c, for which,
a2 + b2 = c2
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.
/* Author : Sreejith Sreekantan Description : Special Pythagorean triplet Problem 9 A Pythagorean triplet is a set of three natural numbers, a < b < c, for which, a2 + b2 = c2 For example, 32 + 42 = 9 + 16 = 25 = 52. There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product abc. Eg: for Pythagorean triplets: (3, 4, 5 ) (5, 12, 13) (8, 15, 17) (7, 24, 25) (20, 21, 29) (12, 35, 37) ( 9, 40, 41) (28, 45, 53) (11, 60, 61) (16, 63, 65) (33, 56, 65) (48, 55, 73) (13, 84, 85) (36, 77, 85) (39, 80, 89) (65, 72, 97) (20, 99, 101) (60, 91, 109) (15, 112, 113) (44, 117, 125) (88, 105, 137) (17, 144, 145) (24, 143, 145) (51, 140, 149) (85, 132, 157) (119, 120, 169) (52, 165, 173) (19, 180, 181) (57, 176, 185) (104, 153, 185) (95, 168, 193) (28, 195, 197) (84, 187, 205) (133, 156, 205) (21, 220, 221) (140, 171, 221) (60, 221, 229) (105, 208, 233) (120, 209, 241) (32, 255, 257) (23, 264, 265) (96, 247, 265) (69, 260, 269) (115, 252, 277) (160, 231, 281) (161, 240, 289) (68, 285, 293) */ #include #include using namespace std; void pythagoreanTriplet(unsigned long sum) { unsigned long m, n, s=sum; s /= 2; unsigned long sqrt_s = sqrt(s); for (int m = 1; m <= sqrt_s ; ++m) { if (s%m==0) { n = (s/m)-m; if (m>n) { cout << sum << " : " << pow(m,2)-pow(n,2) << " " << 2*m*n << " " << pow(m,2)+pow(n,2) << endl; } } } } int main(int argc, char const *argv[]) { unsigned long sums[] = {12, 30, 40, 56, 70, 84, 90, 126, 132, 144, 176, 182, 1000}; for (int i = 0; i < sizeof(sums)/sizeof(unsigned long); ++i) { pythagoreanTriplet(sums[i]); } cout << " the end..." << endl; return 0; }