Перейти к содержимому

Как проверить является ли число числом фибоначчи

  • автор:

Проверка на число Фибоначчи

��

Онлайн калькулятор для проверки введенного числа N на число Фибоначчи. Другими словами, проверить является ли введенное число — числом Фибоначчи.

ℹ

Как пользоваться:

В единственное поле необходимо ввести N — число, которое необходимо проверить.
Нажать кнопку «Проверить», получить ответ является ли число — числом Фибоначчи или нет. Подробнее в разделе «теория».

ℹ

Ответ возможно получить с этапами вычисления формулы, если выставить галочку «подробнее».

!

Ограничения:

Число N — натуральное. То есть N = 1, 2, ….
Число N меньше 65 000 000.

��

Способ проверки:

Натуральное число N является числом Фибоначчи тогда и только тогда, когда $$5N^2 + 4$$ или $$5N^2 − 4$$ является квадратом, то есть $$\sqrt[2] = a$$ или $$\sqrt[2] = b$$,

где $$a,b$$ — целые числа.

��

Пусть $$N = 3$$

Считаем $$5N^2 + 4$$ и $$5N^2 − 4$$

$$5N^2 + 4 = 5 * 3^2 + 4 = 5 * 9 + 4 = 49$$ — является квадратом целого числа, так как $$49 = 7^2$$. Далее можно не проверять с минусом, так как одно условие выполнилось, значит, $$N = 3$$ — число Фиббоначчи.

��

Пусть $$N = 9$$

Считаем $$5N^2 + 4$$ и $$5N^2 − 4$$

$$5N^2 + 4 = 5 * 9^2 + 4 = 5 * 81 + 4 = 409$$ — не является квадратом целого числа. Проверяем с минусом.
$$5N^2 — 4 = 5 * 9^2 — 4 = 5 * 81 — 4 = 401$$ — не является квадратом целого числа, а значит, $$N = 9$$ — не число Фиббоначчи.

ℹ

Заметили неточность в работе калькулятора? Убедительная просьба сообщить об этом в комментариях или через форму обратной связи. Заранее Вас благодарим.

Является ли число числом Фибоначчи

Основы программирования 2.0

Задача 2.23
Дано натуральное число Х. Если оно является числом Фибоначчи, то присвоить переменной Т значение 1, иначе — значение 0. Вывести на экран значение Т.

На мой взгляд, задачка любопытная. Начинающим придётся подумать и включить воображение, что и требуется при изучении программирования.

О том, как получить последовательность чисел Фибоначчи с помощью рекурсии, я рассказывал здесь (если вы не знаете, что такое числа Фибоначчи, то узнаете там же).

Напомню, как выглядит исходный код рекуррентной функции для получения нужной нам последовательности чисел:

//********************************************************** // Вычисляет число Фибоначчи //********************************************************** function Fibonachi(Num : integer) : integer; begin //Если это 1-й или 2-й элемент if (Num = 1) or (Num = 2) then Result := 1 //Иначе функция вызывает сама себя (рекурсия) else Result := Fibonachi(Num-1) + Fibonachi(Num-2); end;

Один из способов решения данной задачи — это просто вызывать эту функцию и сравнивать результат с числом Х. Однако с рекурсией надо быть осторожным — при большом количестве чисел она может занять очень много времени на выполнение. Поэтому лучше обойтись без неё.

Для решения задачи сначала присвоим переменной Т значение 0. Затем в цикле будем создавать числа Фибоначчи, и сравнивать с числом Х. Если текущее число Фибоначчи будет равно числу Х, то мы прервём цикл и присвоим значение 1 переменной Т.

Ну а дальше останется только вывести на экран значение Т.

Для лучшей наглядности предоставим пользователю возможность ввести число Х, а также будем выводить ряд чисел Фибоначчи на экран в ходе выполнения программы.

Также ограничим аппетиты пользователя при вводе значения Х, например, числом 1 000 000 000. Иначе время работы программы может сильно затянуться (особенно если использовать рекурсию). Кроме того, введённое число не должно быть равно нулю — это тоже будем проверять. Также число не должно быть отрицательным.

А ещё пользователь может ввести вместо числа букву (или строку). В С++ это будет обработано как число и выдано сообщение. В Паскале же придётся делать дополнительную обработку. Но, чтобы не загромождать код, мы этого делать не будем.

Также обратите внимание на проверку условия в if (X == F2) — в С++ здесь многие новички совершают ошибку, которую долго не могут найти и не понимают, почему программа работает неправильно.

Решение задачи 2.23 на Паскале
program mytask; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const MAX_VAL = 1000000000; //**************************************************************** // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ //**************************************************************** var X : Integer; Y : Integer; F1 : Integer = 1; F2 : Integer = 1; T : WORD = 0; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin Write(‘X = ‘); ReadLn(X); if X > MAX_VAL then begin WriteLn(‘The number is too big!’); WriteLn(‘The number X should be no more than ‘, MAX_VAL); WriteLn(‘Press ENTER. ‘); ReadLn; Exit; end; if X < 1 then begin WriteLn('The number is too small!'); WriteLn('Number X should not be less than ', 1); WriteLn('Press ENTER. '); ReadLn; Exit; end; Write(F1, ' '); while F2 Break; end; Y := F2; F2 := F2 + F1; F1 := Y; end; WriteLn(#10#13'T = ', T); WriteLn('The end. Press ENTER. '); ReadLn; end.

Решение задачи 2.23 на С++ #include #include using namespace std; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const signed int MAX_VAL = 1000000000; //**************************************************************** // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ //**************************************************************** signed int X; signed int Y; signed int F1 = 1; signed int F2 = 1; unsigned short int T = 0; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** int main(int argc, char *argv[]) < cout ; if (X < 1) < cout ; cout //. ВНИМАНИЕ . Это НЕ Паскаль! < T = 1; break; >; Y = F2; F2 = F2 + F1; F1 = Y; >; cout

Условие

Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что φn = A. Если А не является числом Фибоначчи, выведите число -1.

Решение

a = int(input()) if a == 0: print(0) else: fib_prev, fib_next = 0, 1 n = 1 while fib_next 

Добавить комментарий Отменить ответ

ЕГЭ на соточку для чайников

Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене ��

Помогите решить задачку на Python через цикл while, без функций

Дано целое число N (> 1).
Последовательность чисел Фибоначчи FK определяется следующим образом:
F1 = 1, F2 = 1, FK = FK−2 + FK−1, K = 3, 4, … .
Проверить, является ли число N числом Фибоначчи.
Если является, то вывести true, если нет — вывести false

Голосование за лучший ответ

Делаешь a,b=1,1 и потом в цикле a,b=b,a+b. Если в какой-то момент введенное равно a - прерываешь и пишешь true, если a становится больше - false.

Паша СташевскийУченик (125) 7 лет назад
Спасибо, очень помог))

N=int(input())
n1=1#Первое число
n2=1#Второе число
n3=0#Промежуточное второе число
while n2 if (N==n2):
break
n3=n2
n2=n1+n2
n1=n3
if (N==n2):
print(True)
else:
print(False)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *