已知斐波那契数列:1,1,2,3,5,8,13,21,34,55.........此数列前2009项中能被6整除的数有多少个?

martinblack954
2012-01-22 · TA获得超过1490个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:243万
展开全部
167个
首先需要知道的是,加法对取余数运算没影响
即a+b除6得出的余数,与ab两个数分别除6得出的余数之和再除6,得出两个余数是相等的。
然后,若存在1项除6后余数为0,即整除
则该项以后便是重复前几项的余数(考虑第一项前面有个0,根据数列的累加性质可以推断)。
所以,直接从第一项开始往后数,数到第12项144能被6整除
可得数列各项除6的余数组成的新数列,是12个数一个循环
所以,用2009除以12看看有几个循环即可。
2009除以12为167余5
即2009项内有167个数能被6整除~~~
百度网友9a61beb4f
2012-01-22 · TA获得超过341个赞
知道答主
回答量:52
采纳率:0%
帮助的人:62.1万
展开全部
可不可以增加变量的位数,用多个unsigned long组成?

计算机编程算,我这算得222个
注:我计算斐波那契数的函数是从0开始的,所以counter + 2.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

unsigned long fibonacciDyl( unsigned long );

int main()
{
int n= 0;

for ( counter = 0; counter < 2009; counter++ )
{
if ( fibonacciDyl( counter + 2 ) % 6 == 0 )
n++;
}
cout << "前2009项中能被6整除的数有:" << n << endl;
return 0;
}

unsigned long fibonacciDyl( unsigned long number )
{
unsigned long number0 = 0, number1 =1, numberN;
if ( ( number == 0 ) || ( number == 1 ) )
return number;
else
{
for ( number; number > 1; number-- )
{
numberN = number1 + number0;
number0 = number1;
number1 = numberN;
}
return numberN;
}
}
可以直接在fibonacciDyl函数中,测numberN % 6 == 0的个数,传递2010给 fibonacciDyl函数。这样可以减少程序执行时间。

从第81项开始就都符合要求,在81项之前只有12项,24项,36项,48项,60项,72项,79项符合要求。
前面的几项数据分别是:
144 46368 14930352 4.8075e+009 1.5480e+012

参考资料: http://zhidao.baidu.com/question/239983270.html?an=0&si=1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
散辛瘾3740
2012-01-22 · TA获得超过5.1万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:3630万
展开全部
这个数列从第三项开始,每一项等于前两项之和
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式