0


Python百练成钢002-计算自幂数

这是【Python 百练成钢】系列文章的第 002 篇,计划完成 100 道练习题。

本文环境:python3.8

计算自幂数

什么是自幂数?

自幂数:也叫超完全数字不变数、自恋数、阿姆斯特朗数(Armstrong number),

特征:一个 n 位数(n≥1 ),它的每个位上的数字的 n 次幂之和等于它本身
(例如:

     1
    
    
     3
    
   
   
    +
   
   
    
     5
    
    
     3
    
   
   
    +
   
   
    
     3
    
    
     3
    
   
   
    =
   
   
    153
   
  
  
   1^3 + 5^3+ 3^3 = 153
  
 
13+53+33=153)

即我们上一篇文章中的水仙花数也属于自幂数的一种。

根据位数不同,又对应有不同的自幂数名字(这还颇有点金庸武侠中给不同武功起名的意思呢):
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

计算任意自幂数

需求描述:
定义函数,根据入参自动计算对应范围内的所有自幂数。

实现方法如下:

defget_power_nums(start:int=100, end:int=1000):"""
    根据数据长度判断幂次,计算任意范围的自幂数
    :param start: 起始值,包含
    :param end: 结束值,不包含
    :return:
    """iftype(start)isintandtype(end)isintand0<= start < end:
        my_range =(x for x inrange(start, end))for num in my_range:sum=0
            p =len(str(num))# 幂
            a =[int(s)for s instr(num)]# 数for i in a:sum+= i ** p  # 和if num ==sum:yield num
    eliftype(start)isnotintortype(end)isnotint:raise Exception('参数类型错误')elif start <0or start > end:raise Exception('参数超出范围')

调用函数:

# 数字范围可随意输入,均可正常得到所有自幂数
n = get_power_nums(0,100000)print([i for i in n])
标签: python 自幂数 算法

本文转载自: https://blog.csdn.net/lijing742180/article/details/120837335
版权归原作者 媛测 所有, 如有侵权,请联系我们删除。

“Python百练成钢002-计算自幂数”的评论:

还没有评论