Skip to content

Instantly share code, notes, and snippets.

@orjanv
Created May 27, 2024 19:24
Show Gist options
  • Save orjanv/34a9c405b13f2fe9b1d8ee6ebb9c5d07 to your computer and use it in GitHub Desktop.
Save orjanv/34a9c405b13f2fe9b1d8ee6ebb9c5d07 to your computer and use it in GitHub Desktop.
Find the fibonacci numbers that summed give the input number
# Find the fibonacci numbers that summed give the input number
max_fibonacci_numbers = 1000
def get_fibonacci_sequence(number):
f_list = []
for num in range(0, number + 1):
if num < 2:
f_list.append(num)
else:
f_list.append(f_list[num - 1] + f_list[num - 2])
return f_list
def find_fibonacci_item(fibonacci, number):
for index, item in enumerate(fibonacci):
if number == item:
return fibonacci[index]
elif number < item:
return fibonacci[index - 1]
def main():
print(f'Generating {max_fibonacci_numbers} fibonacci numbers')
fibonacci = get_fibonacci_sequence(max_fibonacci_numbers)
try:
asked_number = int(input("Give me a positive integer to crack: "))
except:
print("Must be a positive integer")
exit()
sums = []
while asked_number > 0:
sum_number = find_fibonacci_item(fibonacci, asked_number)
sums.append(sum_number)
asked_number = asked_number - sum_number
print(f'That number can be summed by fibonacci numbers:')
print(f' + '.join(str(num) for num in sums), f' = {sum(sums)}')
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment