Вот простой способ найти все пифагоровы тройки (a, b, c) с a и b в диапазоне от 1 до N. Мы перебираем пары (a, b), считаем c^2 = a^2 + b^2 и проверяем, является ли c целым числом (то есть c^2 — квадрат). Если да — тройка найдена.
Важно: чтобы не дублировать пары (a, b) и (b, a), можно ограничивать второй параметр так, чтобы b начинался с a.
Пояснение по шагам:
- Вводим N — верхнюю границу для a и b.
- Для каждого a от 1 до N:
- Для каждого b от a до N (чтобы избежать дублей):
- Вычисляем c2 = a^2 + b^2.
- Находим целочисленный корень c = sqrt(c2).
- Если c^2 == c2, то (a, b, c) — пифагорова тройка.
- Выводим найденные тройки.
Пример простого кода (используем range и if):
Python (вариант с уникальными парами a ≤ b, чтобы не дублировать тройки):
import math
def pythagorean_triples(N):
triples = []
for a in range(1, N + 1):
for b in range(a, N + 1): # чтобы не повторять (a,b) и (b,a)
c2 = aa + bb
c = math.isqrt(c2) # целочисленный квадратный корень
if c*c == c2:
triples.append((a, b, c))
return triples
Пример использования:
N = int(input("Введите N: "))
for t in pythagorean_triples(N):
print(t)
Дополнительный простой вариант (максимально прямолинейный, но с дублированием пар):
import math
def pythagorean_triples_all(N):
triples = []
for a in range(1, N + 1):
for b in range(1, N + 1):
c2 = aa + bb
c = math.isqrt(c2)
if c*c == c2:
triples.append((a, b, c))
return triples
N = int(input("Введите N: "))
for t in pythagorean_triples_all(N):
print(t)
Что выбрать:
- Если нужно вывести все тройки без дубликатов — используйте первый вариант (b начинается с a).
- Если не важны дубликаты и хочется максимально простой код — используйте второй вариант.
Если хотите, могу адаптировать код под конкретное значение N или под язык программирования другой, например JavaScript.