Пифагоров Триплет с заданной суммой
Триплет Пифагора - это набор натуральных чисел, таких что 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 Codeint 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 Coden = 12pythagoreanTriplet(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 и многому другому, см. Полный курс подготовки к собеседованию .