Представление числа в виде суммы чисел Люка, программа работает неправильно
# Эта программа получает на входе натуральное число
# и выдаёт представление этого числа в виде суммы
# чисел Люка, используя жадный алгоритм.
def lucas_sum(n):
if n == 0:
return 2
elif n == 1:
return 1
else:
luc = [2, 1]
while luc[-1] <= n:
luc.append(luc[-1] + luc[-2])
result = []
for i in range(len(luc)-1, -1, -1):
if luc[i] <= n:
result.append(luc[i])
n -= luc[i]
return result
number = int(input("Enter a natural number: "))
print(lucas_sum(number))
Для достаточно больших чисел программа работает не так уж и плохо. Например, получив на входе число 2023, она выдаёт: [1364, 521, 123, 11, 4], что в полной мере соответствует действительности. Однако если ввести, скажем, число 2, на выходе, увы, получается: [1].
Как можно исправить эту программу, дабы она работала правильно?
Заранее благодарю за ответ.
Источник: Stack Overflow на русском