Python入门教程+项目实战-8.4节: 程序实战-计算水仙花数

目录

8.4.1 何为水仙花数?

8.4.2 输出所有水仙花数

8.4.3 系统学习python


8.4.1 何为水仙花数?

水仙花数是一个大于0的三位数,该数的每位数的三次幂之和等于它本身。

举个简单的例子,153就是一个水仙花数。1的3次幂等于1,5的3次幂等于125,3的3次幂等于27,1+125+27=153, 所以153是个水仙花数。

在理解了水仙花数的基本概念以后,该怎么求出所有的水仙花数呢?算法本身并不难,只需将三位数的每一位取出来,然后计算它们的三次幂,最后相加求和。难点在于如何把三位数的每一位取出来。对于个位数,可让三位数与10求余,结果一定是个位数。为什么呢?因为十位和百位必然能被10整除,所以余数一定是个位数。

十位和百位必然能被10整除,按照这样的原理,我们可以进一步求出十位数: 只需去掉三位数中的个位数,然后再与10求余。

对于十位数,可先与10整除,这样就可以去掉个位数。去掉个位数以后再与10求余,则可得十位数。至于百位数,直接整除100就可以得到百位数。

8.4.2 输出所有水仙花数

在Python中通过range函数可以生成指定范围的整数序列,生成[100, 1000)区间的所有三位数,我们可以这么写:range(100, 1000)。以下为完整的Python代码实现:

Python

"""
@author: 薯条老师
@desc: 输出所有水仙花数
"""

for number in range(100, 1000):
    # 与10求余可得个位数
    a = number % 10
    # 与10整除后再与10求余,可得十位数
    b = number // 10 % 10
    # 直接与100整除,可得百位数
    c = number // 100
    # 最后判断各位数的三次幂之和是否等于本身
    if a**3 + b**3 + c**3 == number:
        print(number)

8.4.3 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习,量化投资。

你可能感兴趣的:(Python入门教程,python,开发语言,算法)