求64位能表示的最大斐波那契數

                                      求64位能表示的最大斐波那契數

轉載請註明來源:http://blog.csdn.net/letian0805

問題說明

求64位能表示的最大斐波那契數,每10個打印一次,並打印最大以及倒數第二個。

原理

F(0)=0,F(1)=1,F(n)=F(n-1) + F(n-2)。利用64位無符號整型F(n)溢出求出F(n-1)、F(n-2)。

代碼

#include 
#include 
#include 
int main(void)
{
    uint64_t pre=0;
    uint64_t cur=1;
    uint64_t next=0;
    uint64_t cnt=1;
    while(1)
    {
        next=cur+pre;
        pre=cur;
        cur=next;
        cnt++;
        if(cnt%10==0)
            printf("F%llu=%llu\n", cnt, cur);
	if (cur + pre < cur)
	    break;
    }
    printf("F%llu=%llu  F%llu=%llu\n", cnt-1, pre, cnt, cur);

    system("pause");
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章