蓝桥杯备战--水仙花数的算法

水仙花数,若一个数的每一位的三次方之和等于此数则称这个数为水仙花数(如:

153 = 1^3+5^3+3^3),今天我们便讨论下三位数中所有水仙花数的求法。

由于水仙花最简单的证明方法即它的定义,所以只要从数字中把他的各个位“取出来”分别三次方再相加并与原数字比较即可,根据这个思想,不难想出两种方法:

1.用整除(//)和求余(%)的方法算出三位:

        即个位数=原数%10,百位数 =原数//100,十位数=原数//10%10,再相加... 

2.利用python的切片的能力:

        令原数(字符串)为‘i’

        个位=int(i[0]),十位=int(i[1]),百位=int(i[2]),再相加...

两种方法皆可输出结果:153、370、371、407

参考代码如下:

i = 100
while i<1000:
    if pow(int(str(i)[0]),3)+pow(int(str(i)[1]),3)+pow(int(str(i)[2]),3)==i:
        print(i)
    i+=1
i = 100
while i<1000:
    if (i%10)**3+(i//100)**3+(i//10%10)**3==i:
        print(i)
    i+=1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值