Задача понятна: найти все пифагоровы тройки (a, b, c) с a и b от 1 до N, где a^2 + b^2 = c^2. Ниже простой подход на Python, используя только диапазоны range и условные операторы if.
Пояснение по шагам
- Идем по всем значениям a от 1 до N и по всем значениям b от 1 до N.
- Вычисляем s = a^2 + b^2.
- Берем c как квадратный корень из s и проверяем, целое ли оно: если c^2 == s, значит тройка существует.
- В простом варианте можно выводить все тройки; чтобы убрать повторения (а,b) и (b,a), можно ограничиться a <= b.
Простой вариант (полный перебор, возможно повторения a,b):
n = int(input("Введите N: "))
for a in range(1, n + 1):
for b in range(1, n + 1):
s = aa + bb
c = int(s*0.5)
if cc == s:
print(a, b, c)
Вариант без дубликатов (считаются тройки с a <= b):
n = int(input("Введите N: "))
for a in range(1, n + 1):
for b in range(a, n + 1):
s = aa + bb
c = int(s*0.5)
if cc == s:
print(a, b, c)
Если нужно ограничить не только a и b, а также чтобы c не превышал N, можно добавить дополнительное условие:
n = int(input("Введите N: "))
for a in range(1, n + 1):
for b in range(a, n + 1):
s = aa + bb
c = int(s*0.5)
if cc == s and c <= n:
print(a, b, c)
Кратко о сложности:
- Временная сложность примерно O(N^2), память почти ничего не использует.
Пример использования:
Введите N: 10
Выводит все тройки (a, b, c) с a,b в 1..10, где c = sqrt(a^2 + b^2) и целый.