斐波那契数列尾数循环

Posted bearcarl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斐波那契数列尾数循环相关的知识,希望对你有一定的参考价值。

尾数循环

斐波那契数列的个位数:一个60步的循环
11235,83145,94370,77415,61785.38190,
99875,27965,16730,33695,49325,72910…
进一步,斐波那契数列的最后两位数是一个300步的循环,最后三位数是一个1500步的循环,最后四位数是一个15000步的循环,最后五位数是一个150000步的循环。
 
验证尾数循环
#include<stdio.h>
int main() {
    long long int f1 = 1, f2 = 1;
    long long int fn;
    int n = 100;
    for(int i = 3; i <= n; i++) {
        fn = f1 + f2;
        f1 = f2;
        f2 = fn;
        printf("f%d: %lld\n", i, fn % 10);
    }
    return 0;
} 

结果:

f3: 2
f4: 3
f5: 5
f6: 8
f7: 3
f8: 1
f9: 4
f10: 5
f11: 9
f12: 4
f13: 3
f14: 7
f15: 0
f16: 7
f17: 7
f18: 4
f19: 1
f20: 5
f21: 6
f22: 1
f23: 7
f24: 8
f25: 5
f26: 3
f27: 8
f28: 1
f29: 9
f30: 0
f31: 9
f32: 9
f33: 8
f34: 7
f35: 5
f36: 2
f37: 7
f38: 9
f39: 6
f40: 5
f41: 1
f42: 6
f43: 7
f44: 3
f45: 0
f46: 3
f47: 3
f48: 6
f49: 9
f50: 5
f51: 4
f52: 9
f53: 3
f54: 2
f55: 5
f56: 7
f57: 2
f58: 9
f59: 1
f60: 0
f61: 1
f62: 1
f63: 2
f64: 3
f65: 5
f66: 8
f67: 3
f68: 1
f69: 4
f70: 5
f71: 9
f72: 4
f73: 3
f74: 7
f75: 0
f76: 7
f77: 7
f78: 4
f79: 1
f80: 5
f81: 6
f82: 1
f83: 7
f84: 8
f85: 5
f86: 3
f87: 8
f88: 1
f89: 9
f90: 0
f91: 9
f92: 9
f93: -8
f94: 1
f95: -7
f96: -6
f97: -3
f98: 7
f99: -6
f100: 1

验证过程不太严谨(到达F90 多的时候数字大小已经超过了 long long int 的值的范围,改进写法是用数组模拟),但从结果还是可以看到尾数的60循环是存在的。

以上是关于斐波那契数列尾数循环的主要内容,如果未能解决你的问题,请参考以下文章

编程实践Linux Shell 编程:使用 循环和递归 实现斐波那契数列代码

斐波那契数列

斐波那契数列

斐波那契数列

剑指offer-斐波那契数列-递归和循环-python

使用数组和 For 循环的斐波那契数列