Sunday, October 6, 2024
Google search engine
HomeData Modelling & AIGenerate a pythagoras triplet from a single integer

Generate a pythagoras triplet from a single integer

Given a single integer n \in   [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 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’s 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.

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>


Output

Pythagoras Triplets exist i.e. 22 120 122

Time Complexity: O(1)
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments