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.
The two solutions this program returns are {0, 500, 500} and {200, 375, 425}. I am unsure if the former is actually a pythagorean triplet, however, the second solution is correct.
#include <iostream>
#include <math.h>
bool createTriple(int a, int b);
int main(void)
{
// Iterate up to 1000, arbitrary number
for(int i = 0; i < 1000; i++)
{
// Start at i to eliminate redunancies
for(int j = i; j < 1000; j++)
{
// If the function returns true, triplet meeting criterion has been found
if(createTriple(i, j))
{
// Output the found triplet
std::cout << i << " " << j << " " << sqrt(pow(i, 2) + pow(j, 2)) << std::endl;
}
}
}
return 1;
}
bool createTriple(int a, int b)
{
// Set c equal to a^2 + b^2
int c = pow(a, 2) + pow(b, 2);
// If the square has no fractional component and a + b + c = 1000, the triplet has been found
if((sqrt(c) - int(sqrt(c)) == 0.0) && (a + b + sqrt(c)) == 1000)
{
return true;
}
return false;
}