Напишите программу, которая вводит натуральное число N и находит все тройки натуральных чисел (а, b, с), для которых выполняется равенство N = а^2+b^2+с^2. Учтите, что таких троек может не быть.
В отличии от двух идиотских ответов у Лёхи Миронова программа работает корректно, только при больших N слишком медленно. Если нужны N порядка миллионов, а то и миллиардов, то лучше так: from math import isqrt
N = int(input('N: ')); n, k = isqrt(N) + 1, 0
for a in range(1, n):
A = a**2
for b in range(a, n):
B = A + b**2
if B >= N: break
C = N - B; c = isqrt(C)
if c < b: break
if c**2 == C: k += 1; print('%d)' % k, a, b, c) Только так выводятся тройки, упорядоченные по возрастанию. Но вроде ещё можно ускорить.
def find_triplets(N):
triplets = []
for a in range(1, int(N**(1/2))+1):
for b in range(a, int(N**(1/2))+1):
for c in range(b, int(N**(1/2))+1):
if a*a + b*b + c*c == N:
triplets.append((a, b, c))
return triplets
N = int(input())
triplets = find_triplets(N)
if triplets:
print("Найденные тройки чисел:")
for triplet in triplets:
print(triplet)
else:
print("Троек чисел, удовлетворяющих условию, не найдено.")
def find_triples(N):
triples = []
for a in range(1, N + 1):
for b in range(1, N + 1):
for c in range(1, N + 1):
if a**2 + b**2 + c**2 == N:
triples.append((a, b, c))
return triples
def main():
try:
N = int(input("Введите натуральное число N: ")
if N <= 0:
print("Введите положительное натуральное число."
else:
result = find_triples(N)
if result:
print(f"Тройки чисел, удовлетворяющие условию: {result}"
else:
print("Троек не найдено."
except ValueError:
print("Введите корректное число."