Open In App

Pythagorean Triplet with given sum using single loop

Last Updated : 06 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

A Pythagorean Triplet is a set of natural numbers such that a < b < c, for which 

a^2 + b^2 = c^2

Given a number N, find a Pythagorean Triplet with sum as given N or return -1.

Examples:

Input: 12  
Output: 3 4 5
Explanation:
As 32 + 42 = 52

Input: 82
Output: -1

Approach: The idea is to find the value of b and c in terms of a and iterate a from 1 to N. To find the value of b and c in terms of a we have to do following:

We have two equations,

a^2 + b^2 = c^2
a + b + c = N

We will find the value of c in term of a and b Then put this value in equation 1 to solve for b. 

From equation 2, 

c = N - b - a

Now, put this value in equation 1.

a^2 + b^2 = (N - b - a)^2

After solving the above equation we will get, 

b = (N * N - 2 * N * a) / (2 * N - 2 * a)
c = N - b - a

Now, iterate a from 1 to N and calculate respectively the value of b and c Then, check if

a^2 + b^2 = c^2

C++

// C++ program to find the Pythagorean
// Triplet with given sum
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate the
// Pythagorean triplet in O(n)
void PythagoreanTriplet(int n)
{
    int flag = 0;
 
    // Iterate a from 1 to N-1.
    for (int a = 1; a < n; a++)
    {
        // Calculate value of b
        int b = (n * n - 2 * n * a)
                / (2 * n - 2 * a);
 
        // The value of c = n - a - b
        int c = n - a - b;
 
        if (a * a + b * b == c * c
            && b > 0 && c > 0)
        {
            cout << a << " " << b << " " << c;
            flag = 1;
            break;
        }
    }
 
    if (flag == 0) {
        cout << "-1";
    }
 
    return;
}
 
// Driver Code
int main()
{
    int N = 12;
 
    // Function call
    PythagoreanTriplet(N);
 
    return 0;
}

                    

Java

// Java program to find the Pythagorean
// Triplet with given sum
 
class GFG {
 
    // Function to calculate the
    // Pythagorean triplet in O(n)
    static void PythagoreanTriplet(int n)
    {
        int flag = 0;
 
        // Iterate a from 1 to N-1.
        for (int a = 1; a < n; a++)
        {
            // Calculate value of b
            int b = (n * n - 2 * n * a)
              / (2 * n - 2 * a);
 
            // The value of c = n - a - b
            int c = n - a - b;
 
            if (a * a + b * b == c * c
                && b > 0 && c > 0)
            {
                System.out
                  .print(a + " " + b + " " + c);
                flag = 1;
                break;
            }
        }
 
        if (flag == 0)
        {
            System.out.print("-1");
        }
 
        return;
    }
   
    // Driver Code
    public static void main(String[] args)
    {
        int N = 12;
 
        // Function call
        PythagoreanTriplet(N);
    }
}
 
// This code contributed by sapnasingh4991

                    

Python3

# Python3 program to find the Pythagorean
# Triplet with a given sum
 
# Function to calculate the
# Pythagorean triplet in O(n)
 
 
def PythagoreanTriplet(n):
    flag = 0
 
    # Iterate a from 1 to N-1.
    for a in range(1, n, 1):
 
        # Calculate value of b
        b = (n * n - 2 * n * a) // (2 * n - 2 * a)
 
        # The value of c = n - a - b
        c = n - a - b
 
        if (a * a + b * b == c * c
            and b > 0 and c > 0):
            print(a, b, c)
            flag = 1
            break
 
    if(flag == 0):
        print("-1")
 
    return
 
 
# Driver code
if __name__ == '__main__':
    N = 12
 
    # Function call
    PythagoreanTriplet(N)
 
# This code is contributed by Bhupendra_Singh

                    

C#

// C# program to find the Pythagorean
// Triplet with given sum
using System;
 
class GFG {
 
    // Function to calculate the
    // Pythagorean triplet in O(n)
    static void PythagoreanTriplet(int n)
    {
        int flag = 0;
 
        // Iterate a from 1 to N-1.
        for (int a = 1; a < n; a++)
        {
            // Calculate value of b
            int b = (n * n - 2 * n * a)
              / (2 * n - 2 * a);
 
            // The value of c = n - a - b
            int c = n - a - b;
            if (a * a + b * b == c * c
                && b > 0 && c > 0)
            {
                Console.Write(a + " " + b + " " + c);
                flag = 1;
                break;
            }
        }
 
        if (flag == 0) {
            Console.Write("-1");
        }
        return;
    }
 
    // Driver code
    public static void Main(String[] args)
    {
        int N = 12;
 
        // Function call
        PythagoreanTriplet(N);
    }
}
 
// This code is contributed by shivanisinghss2110

                    

Javascript

<script>
    // Javascript program to find the Pythagorean
      // Triplet with given sum
     
    // Function to calculate the
    // Pythagorean triplet in O(n)
    function PythagoreanTriplet(n)
    {
        let flag = 0;
 
        // Iterate a from 1 to N-1.
        for (let a = 1; a < n; a++)
        {
            // Calculate value of b
            let b = (n * n - 2 * n * a)
                    / (2 * n - 2 * a);
 
            // The value of c = n - a - b
            let c = n - a - b;
 
            if (a * a + b * b == c * c
                && b > 0 && c > 0)
            {
                document.write(a + " " + b + " " + c);
                flag = 1;
                break;
            }
        }
 
        if (flag == 0) {
            document.write("-1");
        }
 
        return;
    }
     
    let N = 12;
  
    // Function call
    PythagoreanTriplet(N);
 
// This code is contributed by divyeshrabadiya
</script>

                    

Output
3 4 5

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



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads