Created
May 27, 2024 19:24
-
-
Save orjanv/34a9c405b13f2fe9b1d8ee6ebb9c5d07 to your computer and use it in GitHub Desktop.
Find the fibonacci numbers that summed give the input number
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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