高效检查第n个斐波那契数是否为10的倍数的方法?
我们将看到一种高效的方法来检查第n个斐波那契数是否为10的倍数。假设斐波那契数列为{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987}。因此,第15个(从0开始计数)斐波那契数能被10整除。对于第16个,结果也为真。
最简单的方法是生成直到给定项的斐波那契数,并检查它是否能被10整除?但是这种解决方案不好,因为它不适用于较大的项。
另一种好的方法如下:
斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
这些数字(以粗体字标记)能被2整除。它们的间隔是3个斐波那契数。同样,请检查:
斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
每第5个数都能被5整除。现在3和5的最小公倍数是15。所以我们可以说,每第15个斐波那契数都能被10整除。
让我们看看算法来了解其思想。
算法
fiboDivTen(term)
Begin if term is divisible by 15, then return true end if return false End
示例
#include<iostream>
using namespace std;
bool fiboDivTen(int term) {
if(term % 15 == 0){
return true;
}
return false;
}
int main() {
int term = 45;
if (fiboDivTen(term))
cout << "Divisible";
else
cout << "Not Divisible";
}输出
Divisible
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP