求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;
}

      
      
     
     
    
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值