A Pythagorean Triplet is a set of natural numbers such that a < b < c, for which
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 = 52Input: 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,
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,
Now, put this value in equation 1.
After solving the above equation we will get,
Now, iterate a from 1 to N and calculate respectively the value of b and c Then, check if
// 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 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 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# 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 |
<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)