《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q11)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~

在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6)

Q11 斐波那契数列

     斐波那契数列由两个 1 开端,其后的每一位数字都是前两位数字之和。譬如 1 和 1 的和为 2, 1 和 2 的和为 3, 2 和 3 的和为 5,3 和 5 的和为 8……一直这样继续计算下去,就得到下面这样的数列。

1,1,2,3,5,8,13,21,34,55,89,…

     这个数列就是“斐波那契数列”。

问题
      如下例所示,用斐波那契数列中的每个数除以其数位上所有数字之和。请继续例中的计算,求出后续5 个最小的能整除的数。

      例)   2      → 2÷2
                3     → 3÷3
                5     → 5÷5
                8     → 8÷8
                21    → 21÷3  … 2+1=3,因而除以3
               144     → 144÷9  … 1+4+4=9, 因而除以9

Fibonacci_1 = 1
Fibonacci_2 = 1

result_list = []
# 例子包含了6个,继续求后5例,所以共11个数
while len(result_list) < 11:
    next_fibonacci = Fibonacci_1 + Fibonacci_2
    Fibonacci_1 = Fibonacci_2
    Fibonacci_2 = next_fibonacci
    number_list = [int(i) for i in str(next_fibonacci)]
    if next_fibonacci % sum(number_list) == 0:
        result_list.append(next_fibonacci)
print("后续5个最小的能整除的数为:{0}".format(result_list[-5:]))

运行结果:

            后续5个最小的能整除的数为:[2584, 14930352, 86267571272, 498454011879264, 160500643816367088]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值