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 neveropen!