Чтобы определить, является ли заданное натуральное число числом Фибоначчи, необходимо воспользоваться свойствами последовательности Фибоначчи.
Алгоритм решения задачи:
Начальное условие: Последовательность Фибоначчи начинается с чисел 1 и 1. Следующие числа получаются суммированием двух предыдущих.
Генерация последовательности: Начнем с первых двух чисел 1 и 1 и будем генерировать последующие, пока не достигнем числа, равного или превышающего введенное число.
Проверка: Если в процессе генерации последовательности мы получаем число, равное введенному, значит, это число является числом Фибоначчи. Если же число в последовательности превышает введенное, и совпадения не произошло, значит, введенное число не является числом Фибоначчи.
Пример реализации алгоритма:
Инициализируем первые два числа последовательности: f1 = 1
, f2 = 1
.
Если введенное число равно f1
или f2
, то это число Фибоначчи.
В противном случае, вычисляем последующие числа в последовательности:
- Пока текущее число меньше введенного:
- Вычисляем следующее число
f3 = f1 + f2
.
- Обновляем значения:
f1 = f2
, f2 = f3
.
- Проверяем, равно ли
f3
введенному числу.
Если нашли совпадение, то введенное число является числом Фибоначчи. Если f3
превысило введенное число, то оно не является числом Фибоначчи.
Пример кода на Python:
def is_fibonacci_number(n):
if n < 1:
return False
f1, f2 = 1, 1
if n == f1 or n == f2:
return True
while True:
f3 = f1 + f2
if f3 == n:
return True
elif f3 > n:
return False
f1, f2 = f2, f3
# Пример использования функции
number = int(input("Введите натуральное число: "))
if is_fibonacci_number(number):
print(f"{number} является числом Фибоначчи.")
else:
print(f"{number} не является числом Фибоначчи.")
Объяснение:
- Мы начинаем с первых двух чисел последовательности Фибоначчи.
- Если введенное число совпадает с одним из первых двух чисел, мы сразу возвращаем
True
.
- В цикле мы продолжаем вычислять следующее число последовательности, пока не найдем совпадение или не превысим введенное число.
- Если текущее число превышает введенное и совпадения не было найдено, возвращаем
False
.
Этот алгоритм позволяет эффективно определить, является ли заданное число числом Фибоначчи, без необходимости предварительного вычисления всей последовательности до этого числа.