Project Euler Problem 9: 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 whicha +
b + c = 1000.
Find the product abc.
C++:
#include <iostream> using namespace std; int main() { int n, c; // a + b + c = n // a^2 + b^2 = c^2 // a < b < c // a + b > c // a < n / 3 // b <= (n - a) / 2 // c = n - a - b while(cin >> n) { for(int a=1, maxa=n/3; a<maxa; a++) { for(int b=a+1, maxb=(n-a)/2; b<=maxb; b++) { c = n - a - b; if(a + b <= c) continue; if(a * a + b * b == c * c) cout << a * b * c << endl; } } } return 0; }
C++(Truth):
#include <iostream> using namespace std; int main() { int s, c; while(cin >> s) { for(int a=3, maxa=(s-3)/3; a<=maxa; a++) { for(int b=a+1, maxb=(s-1-a)/2; b<=maxb; b++) { c = s - a - b; if(a + b <= c) continue; if(a * a + b * b == c * c) cout << a * b * c << endl; } } } return 0; }