2020-08-16

Python-----   寻找100--1000内的水仙花数

水仙花数介绍

        水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。------摘自百度百科

实现方法

        刚开始学,这里使用简单的循环控制语句while。

        首先,先输出100-1000的数,这个区间内的数都有可能称为水仙花数。

i=100
while i<=1000:
    print(i)
    i+=1

 

结果如图。

其次,水仙花数是每个位上的数字的 3次幂之和等于它本身,所以,我们要进行拆分,得到每位上的数。可以想到,对这个三位数 i 整除100可以得到它的百位, i 对100的求模后再整除10可以得到十位, i 进行100的求模后再对10求模可以得到个位。

例如 i = 548,代码如下:

i=548
a=i//100        #百位
b=(i%100)//10   #十位
c=(i%100)%10    #个位
print('百位 ',a)
print('十位 ',b)
print('个位 ',c)

接下来判断它们三次方的和是否等于 i 本身。

# n位数(n≥3),求每个位的n次幂的和等于它本身
i=100
j=0                   #统计水仙花数的个数
while i<1000:
    a=int(i/100)
    b=int((i%100)/10)
    c=int((i%100)%10)
    if a**3+b**3+c**3 == i:
        print(i)
        j+=1
    i+=1
print('水仙花数的个数:',j)
#//表示整除

结果如下:

这里,我是用的是 int()函数求整,一开始自己做没想到有整除,以为和其他语言一样 ‘ / ’ 得出的结果就是整数,实际上python的出的是小数,需要用 ‘ // ’ 表示整除。

这边使用了 j 来记录水仙花数的个数。

以上就是水仙花数的简单实现方法。

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值