# Pythagorean Triplet with given sum

Last Updated : 25 Oct, 2022

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 + 4^2 = 5^2.
Given a number n, find a Pythagorean Triplet with sum 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.

Below is the implementation of the above approach:

## C++

 `// C++ program to find Pythagorean ` `// Triplet of given sum.` `#include ` `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 Code` `int` `main()` `{` `    ``int` `n = 12;` `    ``pythagoreanTriplet(n);` `    ``return` `0;` `}`

## Java

 `// Java program to find Pythagorean  ` `// Triplet of given sum.` `class` `GFG` `{` `    ``static` `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) ` `                ``{` `                    ``System.out.print(i + ``", "``+ ` `                                ``j + ``", "` `+ k);` `                    ``return``;` `                ``}` `            ``}` `        ``} ` `    `  `        ``System.out.print(``"No Triplet"``);` `    ``}` `    `  `    ``// Driver Code` `    ``public` `static` `void` `main(String arg[])` `    ``{` `        ``int` `n = ``12``;` `        `  `        ``pythagoreanTriplet(n);` `    ``}` `}`   `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python3 program to find ` `# Pythagorean Triplet of ` `# given sum.`   `def` `pythagoreanTriplet(n):`   `    ``# Considering triplets in ` `    ``# sorted order. The value ` `    ``# of first element in sorted ` `    ``# triplet can be at-most n/3.` `    ``for` `i ``in` `range``(``1``, ``int``(n ``/` `3``) ``+` `1``): ` `        `  `        ``# The value of second element ` `        ``# must be less than equal to n/2` `        ``for` `j ``in` `range``(i ``+` `1``, ` `                       ``int``(n ``/` `2``) ``+` `1``): `   `            ``k ``=` `n ``-` `i ``-` `j` `            ``if` `(i ``*` `i ``+` `j ``*` `j ``=``=` `k ``*` `k): ` `                ``print``(i, ``", "``, j, ``", "``, ` `                               ``k, sep ``=` `"")` `                ``return` `    `  `    ``print``(``"No Triplet"``)` `    `  `# Driver Code` `n ``=` `12` `pythagoreanTriplet(n)`   `# This code is contributed` `# by Smitha Dinesh Semwal`

## C#

 `// C# program to find  ` `// Pythagorean Triplet ` `// of given sum.` `using` `System;`   `class` `GFG ` `{` `    ``static` `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) ` `                ``{` `                    ``Console.Write(i + ``", "``+ ` `                                  ``j + ``", "` `+ k);` `                    ``return``;` `                ``}` `            ``}` `        ``} ` `    `  `        ``Console.Write(``"No Triplet"``);` `    ``}` `    `  `    ``// Driver Code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `n = 12;` `        `  `        ``pythagoreanTriplet(n);` `    ``}` `}`   `// This code is contributed by Vt_m.`

## PHP

 ``

## Javascript

 ``

Output :

`3, 4, 5`

Time complexity: O(n2) for a given number n
Auxiliary space: O(1)

Previous
Next