A Pythagorean Triplet is a set of natural numbers such that a < b < c, for which a^2 + b^2 = c^2. For example, 3^2 + ^2 = 5^2.

Given a number n, find a with as given n.

Examples:

```Input : n = 12
Output : 3, 4, 5
Note that 3, 4 and 5 is a Pythagorean Triplet
with sum equal to 12.

Input : n = 4.
Output : No Triplet
There does not exist a Pythagorean Triplet
with sum equal to 4.
```

A simple solution is to run three nested loops to generate all possible triplets and for every triplet, check if it is a Pythagorean Triplet and has given sum. Time complexity of this solution is O(n3).

An efficient solution is to run two loops, where first loop runs from i = 1 to n/3, second loop runs from j = i+1 to n/2. In second loop, we check if (n – i – j) is equal to i * i + j * j.

```// C++ program to find Pythagorean Triplet
// given sum.
#include <bits/stdc++.h>
using namespace std;

void pythagoreanTriplet(int n)
{
// Considering triplets in sorted
// order. The value of first element
// in sorted triplet can be at-most n/3.
for (int i = 1; i <= n / 3; i++) {

// The value of second element must be
// less than equal to n/2
for (int j = i + 1; j <= n / 2; j++) {

int k = n - i - j;
if (i * i + j * j == k * k) {
cout << i << ", "<< j << ", "
<< k;
return;
}
}
}

cout << "No Triplet";
}

// Driver function
int main()
{
int n = 12;
pythagoreanTriplet(n);
return 0;
}
```

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.