Generate a pythagoras triplet from a single integer

Given a single integer n \in [1, 1000000000], generate a pythagoras triplet with includes n as of it’s 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 a^2 + b^2 = c^2

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 (n^2/4 - 1)^2 + n^2 = (n^2/4 + 1)^2

if n is odd, our triplets are calculated by formula (n^2-1)^2/2  + n^2 = (n^2+1)^2/2

Proof:
Pythagoras Theorem can also be written as c^2 - b^2 = a^2
i.e a*a = (c-b)(c+b)
a*a x 1 = a*a, thus c = (a^2+1)/2 and b = (a^2 - 1)/2, this solution works if n is odd.
For even solution, c+b = n^2/2, c-b=2, thus, we get the above formula when n is even.

Code

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right



Output:

Pythagoras Triplets exist i.e. 22 120 122


My Personal Notes arrow_drop_up

Waba Laba Dub Dub

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.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : Mihawk, jit_t, Mithun Kumar