Задача №149. Теорема Лагранжа (python)
Теорема Лагранжа утверждает, что любое натуральное число можно представить в виде суммы четырех точных квадратов. По данному числу n найдите такое представление: напечатайте от 1 до 4 натуральных чисел, квадраты которых дают в сумме данное число.
Входные данные
Программа получает на вход одно натуральное число n < 10000.
Выходные данные
Программа должна вывести от 1 до 4 натуральных чисел, квадраты которых дают в сумме данное число.
Примеры
входные данные
3
выходные данные
1 1 1
входные данные
7
выходные данные
2 1 1 1
Помогите, с обяснением, дам 30 баллов.
Answers & Comments
from math import sqrt
# Ввод числа
n = int(input())
# Находим 4 числа
for i in range(4):
# Вычисляем корень из исходного числа - он будет в типе float, приводим его в тип int
s = int(sqrt(n))
# Отнимаем квадрат получившегося числа от исходного. Заметьте, что т.к. мы привели float в int, у нас остаётся остаток в числе int, который будет использоваться на следующей итерации
# Проще говоря, отбрасывается вещественная часть числа и остаётся только целая
n -= s ** 2
# Проверяем, что полученное число не 0 (по условию в примерах нули не выводятся)
if s != 0:
# Вывод
print(s, end=" ")