Euler 9 in C
The language can make a brute-force search faster, but eliminating unnecessary work is better. Substituting into the Pythagorean equation and solving for leaves only one variable to search:
#include <stdio.h>
int main(void)
{
const int sum = 1000;
for (int a = 1; a < sum / 3; ++a) {
const int numerator = sum * (sum - 2 * a);
const int denominator = 2 * (sum - a);
if (numerator % denominator != 0)
continue;
const int b = numerator / denominator;
const int c = sum - a - b;
if (a < b && b < c) {
printf("%d %d %d = %d\n", a, b, c, a * b * c);
return 0;
}
}
fputs("no solution\n", stderr);
return 1;
}
The divisibility check ensures that b is an integer. This searches fewer
than sum / 3 candidates in constant space and prints
.