Program for finding all pythagorean triples in an array.
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
using namespace std;
int main() {
vector<int> vec = { 25, 3, 5, 4, 7, 9, 12, 13, 6, 8, 10, 15, 16, 20 };
cout << "Array : ";
for (const auto& val : vec) {
cout << val << " ";
} cout << endl;
sort(vec.begin(), vec.end());
for (int i=0; i<vec.size(); i++) {
vec[i] = vec[i] * vec[i];
}
// Check for the condition (c = a + b)
int a, b, c;
for (c = vec.size(); c > 1; c--) {
a = 0; // Start a from the beginning and keep incrementing, till it is less than b.
b = c-1; // Start b from the second last position and keep decrementing till it is > a.
while (a < b) {
if (vec[a] + vec[b] == vec[c]) {
cout << "Found : " << sqrt(vec[a]) << " " << sqrt(vec[b]) << " " << sqrt(vec[c]) << endl;
a++;
b--;
} else if (vec[a] + vec[b] < vec[c]) {
a++;
} else {
b--;
}
}
}
return 0;
}
Output
Array : 25 3 5 4 7 9 12 13 6 8 10 15 16 20
Found : 15 20 25
Found : 12 16 20
Found : 9 12 15
Found : 5 12 13
Found : 6 8 10
Found : 3 4 5
© 2019-2026 Algotree.org | All rights reserved.
This content is provided for educational purposes. Feel free to learn, practice, and share knowledge.
For questions or contributions, visit algotree.org
"The only way to do great work is to love what you do. - Steve Jobs"