已知斐波那契数列:1,1,2,3,5,8,13,21,34,55.........此数列前2009项中能被6整除的数有多少个?
3个回答
展开全部
可不可以增加变量的位数,用多个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
计算机编程算,我这算得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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个数列从第三项开始,每一项等于前两项之和
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询