Pythagorean Triplet with given sum
A Pythagorean Triplet is a set of natural numbers such that a < b < c, for which a^2 + b^2 = c^2. For example, 3^2 + 4^2 = 5^2.
Given a number n, find a Pythagorean Triplet with sum as given n.
Examples :
Input : n = 12
Output : 3, 4, 5
Note that 3, 4 and 5 is a Pythagorean Triplet with sum equal to 12.
Input : n = 4.
Output : No Triplet
There does not exist a Pythagorean Triplet with sum equal to 4.
A simple solution is to run three nested loops to generate all possible triplets and for every triplet, check if it is a Pythagorean Triplet and has given sum. Time complexity of this solution is O(n3).
An efficient solution is to run two loops, where first loop runs from i = 1 to n/3, second loop runs from j = i+1 to n/2. In second loop, we check if (n – i – j) is equal to i * i + j * j.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void pythagoreanTriplet( int n)
{
for ( int i = 1; i <= n / 3; i++)
{
for ( int j = i + 1; j <= n / 2; j++)
{
int k = n - i - j;
if (i * i + j * j == k * k)
{
cout << i << ", "
<< j << ", "
<< k;
return ;
}
}
}
cout << "No Triplet" ;
}
int main()
{
int n = 12;
pythagoreanTriplet(n);
return 0;
}
|
Java
class GFG
{
static void pythagoreanTriplet( int n)
{
for ( int i = 1 ; i <= n / 3 ; i++)
{
for ( int j = i + 1 ; j <= n / 2 ; j++)
{
int k = n - i - j;
if (i * i + j * j == k * k)
{
System.out.print(i + ", " +
j + ", " + k);
return ;
}
}
}
System.out.print( "No Triplet" );
}
public static void main(String arg[])
{
int n = 12 ;
pythagoreanTriplet(n);
}
}
|
Python3
def pythagoreanTriplet(n):
for i in range ( 1 , int (n / 3 ) + 1 ):
for j in range (i + 1 ,
int (n / 2 ) + 1 ):
k = n - i - j
if (i * i + j * j = = k * k):
print (i, ", " , j, ", " ,
k, sep = "")
return
print ( "No Triplet" )
n = 12
pythagoreanTriplet(n)
|
C#
using System;
class GFG
{
static void pythagoreanTriplet( int n)
{
for ( int i = 1; i <= n / 3; i++)
{
for ( int j = i + 1;
j <= n / 2; j++)
{
int k = n - i - j;
if (i * i + j * j == k * k)
{
Console.Write(i + ", " +
j + ", " + k);
return ;
}
}
}
Console.Write( "No Triplet" );
}
public static void Main()
{
int n = 12;
pythagoreanTriplet(n);
}
}
|
PHP
<?php
function pythagoreanTriplet( $n )
{
for ( $i = 1; $i <= $n / 3; $i ++)
{
for ( $j = $i + 1; $j <= $n / 2; $j ++)
{
$k = $n - $i - $j ;
if ( $i * $i + $j * $j == $k * $k )
{
echo $i , ", " , $j , ", " , $k ;
return ;
}
}
}
echo "No Triplet" ;
}
$n = 12;
pythagoreanTriplet( $n );
?>
|
Javascript
<script>
function pythagoreanTriplet(n)
{
for (let i = 1; i <= n / 3; i++)
{
for (let j = i + 1; j <= n / 2; j++)
{
let k = n - i - j;
if (i * i + j * j == k * k)
{
document.write(i + ", " +
j + ", " + k);
return ;
}
}
}
document.write( "No Triplet" );
}
let n = 12;
pythagoreanTriplet(n);
</script>
|
Time complexity: O(n2) for a given number n
Auxiliary space: O(1)
Last Updated :
25 Oct, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...