Пифагоров Триплет с заданной суммой
Триплет Пифагора - это набор натуральных чисел, таких что a <b <c, для которого a ^ 2 + b ^ 2 = c ^ 2 . Например, 3 ^ 2 + 4 ^ 2 = 5 ^ 2.
Дано число n, найдите триплет Пифагора с суммой, как задано n.
Примеры :
Ввод: n = 12 Выход: 3, 4, 5 Обратите внимание, что 3, 4 и 5 - это триплет Пифагора. с суммой равной 12. Ввод: n = 4. Выход: без триплета Пифагорова триплета не существует с суммой равной 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.
C++
// C++ program to find Pythagorean // Triplet of given sum. #include <bits/stdc++.h> using namespace std; void pythagoreanTriplet( int n) { // Considering triplets in // sorted order. The value // of first element in sorted // triplet can be at-most n/3. for ( int i = 1; i <= n / 3; i++) { // The value of second // element must be less // than equal to n/2 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" ; } // Driver Code int main() { int n = 12; pythagoreanTriplet(n); return 0; } |
Java
// Java program to find Pythagorean // Triplet of given sum. class GFG { static void pythagoreanTriplet( int n) { // Considering triplets in // sorted order. The value // of first element in sorted // triplet can be at-most n/3. for ( int i = 1 ; i <= n / 3 ; i++) { // The value of second element // must be less than equal to n/2 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" ); } // Driver Code public static void main(String arg[]) { int n = 12 ; pythagoreanTriplet(n); } } // This code is contributed by Anant Agarwal. |
Python3
# Python3 program to find # Pythagorean Triplet of # given sum. def pythagoreanTriplet(n): # Considering triplets in # sorted order. The value # of first element in sorted # triplet can be at-most n/3. for i in range ( 1 , int (n / 3 ) + 1 ): # The value of second element # must be less than equal to n/2 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" ) # Driver Code n = 12 pythagoreanTriplet(n) # This code is contributed # by Smitha Dinesh Semwal |
C#
// C# program to find // Pythagorean Triplet // of given sum. using System; class GFG { static void pythagoreanTriplet( int n) { // Considering triplets in // sorted order. The value // of first element in sorted // triplet can be at-most n/3. for ( int i = 1; i <= n / 3; i++) { // The value of second element // must be less than equal to n/2 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" ); } // Driver Code public static void Main() { int n = 12; pythagoreanTriplet(n); } } // This code is contributed by Vt_m. |
PHP
<?php // PHP program to find // Pythagorean Triplet // of given sum. function pythagoreanTriplet( $n ) { // Considering triplets in // sorted order. The value // of first element in sorted // triplet can be at-most n/3. for ( $i = 1; $i <= $n / 3; $i ++) { // The value of second // element must be less // than equal to n/2 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" ; } // Driver Code $n = 12; pythagoreanTriplet( $n ); // This code is contributed by anuj_67. ?> |
Javascript
<script> // JavaScript program to find Pythagorean // Triplet of given sum. function pythagoreanTriplet(n) { // Considering triplets in // sorted order. The value // of first element in sorted // triplet can be at-most n/3. for (let i = 1; i <= n / 3; i++) { // The value of second element // must be less than equal to n/2 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" ); } // Driver Code let n = 12; pythagoreanTriplet(n); // This code is contributed by avijitmondal1998. </script> |
3, 4, 5
Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .