Python
Снова не могу решить задачу по питону.
Дано натуральное число c. Напишите функцию is_right(с), которая возвращает True, если существует прямоугольный треугольник с гипотенузой c и целочисленными катетами. (в прямоугольном треугольнике квадрат гипотенузы равен сумме квадратов катетов.)
def is_right(c):
c2 = c ** 2 # Квадрат вычисляется вне цикла, чтобы каждый раз не считать
for a in range(1, 1 + int(c * (2 ** 0.5) // 2) ):
b = (c2 - a * a) ** 0.5
if b == int(b):
return True
return False
________
c * (2 ** 0.5) // 2 — степень ** 0.5, это квадратный корень. Получено отсюда:
Предполагая, что две стороны равны,
a² + a² = c²
2a² = c²
a√2 = c
a = c / √2 = c√2 / 2
____
Т. е. перебирая 1 + 9, 2 + 8, 3 + 7, 4 + 5, 5 + 5 — если дошло сюда и не нашлось, значит и дальше не найдется, всё повторяется в обратном порядке.
c2 = c ** 2 # Квадрат вычисляется вне цикла, чтобы каждый раз не считать
for a in range(1, 1 + int(c * (2 ** 0.5) // 2) ):
b = (c2 - a * a) ** 0.5
if b == int(b):
return True
return False
________
c * (2 ** 0.5) // 2 — степень ** 0.5, это квадратный корень. Получено отсюда:
Предполагая, что две стороны равны,
a² + a² = c²
2a² = c²
a√2 = c
a = c / √2 = c√2 / 2
____
Т. е. перебирая 1 + 9, 2 + 8, 3 + 7, 4 + 5, 5 + 5 — если дошло сюда и не нашлось, значит и дальше не найдется, всё повторяется в обратном порядке.
import math
def is_right(c):
~~c, e, t = c * c - 1, c * c // 2, 1
~~while c >= e:
~~~~if math.round(math.sqrt(c)) ** 2 == c: return True
~~~~t += 2
~~~~c -= t
~~return False
Последовательно проверяем, что число с * с - 1, c * c - 4, c * c - 9 и т. д. до c * c / 2 является квадратом целого числа. Если такое число найдено - возвращаем True. Если ни одно число не является квадратом - возвращаем False.
def is_right(c):
~~c, e, t = c * c - 1, c * c // 2, 1
~~while c >= e:
~~~~if math.round(math.sqrt(c)) ** 2 == c: return True
~~~~t += 2
~~~~c -= t
~~return False
Последовательно проверяем, что число с * с - 1, c * c - 4, c * c - 9 и т. д. до c * c / 2 является квадратом целого числа. Если такое число найдено - возвращаем True. Если ни одно число не является квадратом - возвращаем False.
Руслан
Спасибо. Однако я не рекомендую опытным программистам отвечать на мои вопросы, ведь я совсем недавно изучая Питон, и большинства операторов и модулей я не проходила.
Руслан
изучаю
Похожие вопросы
- Помогите решить задачу на питоне. пожалуйста.
- Помогите мне пожалуйста решить задачу на питоне!
- Помогите решить задачу на питон!!
- Помогите решить задачу в питоне, пожалуйста.
- Помогите решить задачу на Питоне
- Помогите пожалуйста решить задачу на питоне...
- Помогите пожалуйста решить задачи на питоне:
- Решите задачи по питону пж
- Помогите решить задачу в питоне
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.