求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 <stdio.h> #include <stdlib.h> #include <stdint.h> 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; }
作者:letian0805 发表于2013-12-25 23:37:21 原文链接
阅读:156 评论:0 查看评论