Generate a pythagoras triplet from a single integer

Given a single integer n [1, 1000000000], generate a Pythagoras triplet that includes n as one of its sides if possible.
Examples :
Input : 22 Output : Pythagoras Triplets exist i.e. 22 120 122 Input : 4 Output : Pythagoras Triplets exist i.e. 4 3 5 Input : 2 Output : No Pythagoras Triplet exists
Explanation:
Definition: “Pythagorean triplets” are integer solutions to the Pythagorean Theorem, i.e. they satisfy the equation
Our task is to generate a triplet from an integral value. This can be a confusing task because, the side given to us can be a hypotenuse or a non-hypotenuse side.
Starting to calculate triplets by putting them in a formula, it can be deduced that only for 1 and 2, no triplets are possible.
Further,
if n is even, our triplets are calculated by formula
if n is odd, our triplets are calculated by formula
Proof:
Pythagoras’s Theorem can also be written as
i.e a*a = (c-b)(c+b)
a*a x 1 = a*a, thus and
, this solution works if n is odd.
For even solution, , thus, we get the above formula when n is even.
Below is the implementation:
C++
// CPP program to find Pythagoras triplet // with one side as given number. #include <bits/stdc++.h> using namespace std; // Function, to evaluate the Pythagoras triplet // with includes 'n' if possible void evaluate(long long int n) { if (n == 1 || n == 2) printf("No Pythagoras Triplet exists"); else if (n % 2 == 0) { // Calculating for even case long long int var = 1LL * n * n / 4; printf("Pythagoras Triplets exist i.e. "); printf("%lld %lld %lld", n, var - 1, var + 1); } else if (n % 2 != 0) { // Calculating for odd case long long int var = 1LL * n * n + 1; printf("Pythagoras Triplets exist i.e. "); printf("%lld %lld %lld", n, var / 2 - 1, var / 2); } } // Driver function int main() { long long int n = 22; evaluate(n); return 0; } |
Java
// Java program to find // Pythagoras triplet // with one side as // given number. import java.io.*; class GFG { // Function, to evaluate // the Pythagoras triplet // with includes 'n' if // possible static void evaluate( int n) { if (n == 1 || n == 2) System.out.println("No Pythagoras " + "Triplet exists"); else if (n % 2 == 0) { // Calculating for even case int var = 1 * n * n / 4; System.out.print("Pythagoras Triplets " + "exist i.e. "); System.out.print(n + " "); System.out.print(var - 1+ " "); System.out.println(var + 1 +" "); } else if (n % 2 != 0) { int var = 1 * n * n + 1; System.out.print("Pythagoras Triplets " + "exist i.e. "); System.out.print(n + " "); System.out.print(var / 2 - 1 + " "); System.out.println(var / 2 + " "); } } // Driver Code public static void main(String[] args) { int n = 22; evaluate(n); } } // This code is contributed // by ajit |
Python3
# Python3 program to find # Pythagoras triplet with # one side as given number. # Function, to evaluate the # Pythagoras triplet with # includes 'n' if possible def evaluate(n): if (n == 1 or n == 2): print("No Pythagoras" + " Triplet exists"); elif (n % 2 == 0): # Calculating for # even case var = n * n / 4; print("Pythagoras Triplets" + " exist i.e. ", end = ""); print(int(n), " ", int(var - 1), " ", int(var + 1)); elif (n % 2 != 0): # Calculating for odd case var = n * n + 1; print("Pythagoras Triplets " + "exist i.e. ", end = ""); print(int(n), " ", int(var / 2 - 1), " ", int(var / 2)); # Driver Code n = 22; evaluate(n); # This code is contributed by mits |
C#
// C# program to find // Pythagoras triplet // with one side as // given number. using System; class GFG { // Function, to evaluate // the Pythagoras triplet // with includes 'n' if // possible static void evaluate(int n) { if (n == 1 || n == 2) Console.WriteLine("No Pythagoras " + "Triplet exists"); else if (n % 2 == 0) { // Calculating for even case int var = 1 * n * n / 4; Console.Write("Pythagoras Triplets " + "exist i.e. "); Console.Write(n + " "); Console.Write(var - 1+ " "); Console.WriteLine(var + 1 +" "); } else if (n % 2 != 0) { int var = 1 * n * n + 1; Console.Write("Pythagoras Triplets " + "exist i.e. "); Console.Write(n + " "); Console.Write(var / 2 - 1 + " "); Console.WriteLine(var / 2 + " "); } } // Driver Code static public void Main () { int n = 22; evaluate(n); } } // This code is contributed // by ajit |
PHP
<?php // PHP program to find Pythagoras triplet // with one side as given number. // Function, to evaluate the // Pythagoras triplet with // includes 'n' if possible function evaluate($n) { if ($n == 1 || $n == 2) echo "No Pythagoras Triplet exists"; else if ($n % 2 == 0) { // Calculating for even case $var = $n * $n / 4; echo "Pythagoras Triplets exist i.e. "; echo $n, " ", $var - 1, " ", $var + 1; } else if ($n % 2 != 0) { // Calculating for odd case $var = $n * $n + 1; echo "Pythagoras Triplets exist i.e. "; echo $n, " ", $var / 2 - 1, " ", $var / 2; } } // Driver Code $n = 22; evaluate($n); // This code is contributed by ajit ?> |
Javascript
<script> // Javascript program to find // Pythagoras triplet // with one side as // given number. // Function, to evaluate // the Pythagoras triplet // with includes 'n' if // possible function evaluate(n) { if (n == 1 || n == 2) document.write("No Pythagoras Triplet exists"); else if (n % 2 == 0) { // Calculating for even case let Var = 1 * n * n / 4; document.write("Pythagoras Triplets " + "exist i.e. "); document.write(n + " "); document.write(Var - 1+ " "); document.write(Var + 1 +" "); } else if (n % 2 != 0) { let Var = 1 * n * n + 1; document.write("Pythagoras Triplets " + "exist i.e. "); document.write(n + " "); document.write(parseInt(Var / 2, 10) - 1 + " "); document.write(parseInt(Var / 2, 10) + " "); } } let n = 22; evaluate(n); </script> |
Pythagoras Triplets exist i.e. 22 120 122
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



