Skip to content
Related Articles

Related Articles

Improve Article

Generate a pythagoras triplet from a single integer

  • Last Updated : 30 Apr, 2021

Given a single integer n \in [1, 1000000000], generate a Pythagoras triplet which 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 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++




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

Output: 
 

Pythagoras Triplets exist i.e. 22 120 122

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :