关于水仙花数及用Python函数解析水仙花数算法

今天是第一次写博客,好的开始是成功的一半,加油。

水仙花数(narcissistic number)中的narcissistic本意是“自我陶醉,自赏的,自恋的”。

在希腊神话中,貌美青年那喀索斯(narcissus)爱上了自己在水中的倒影,他死后化作水仙花,此花

即因之命名。所以,水仙花数也称为自恋数,自幂数,本名为超完全数字不变数(pluperfect digital invariant, PPDl)

水仙花数,在我们认识的大概认知,数学概念的自幕数是这样解释的。

自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
n为1时,自幂数称为独身数。显然,0,1,2,3,4,5,6,7,8,9都是自幂数。
n为2时,没有自幂数。
n为3时,自幂数称为水仙花数,有4个:153,370,371,407;
n为4时,自幂数称为四叶玫瑰数,共有3个:1634,8208,9474;
n为5时,自幂数称为五角星数,共有3个:54748,92727,93084;
n为6时,自幂数称为六合数, 只有1个:548834;
n为7时,自幂数称为北斗七星数, 共有4个:1741725,4210818,9800817,9926315;
n为8时,自幂数称为八仙数, 共有3个:24678050,24678051,88593477;
n为9时,自幂数称为九九重阳数,共有4个:146511208,472335975,534494836,912985153;
n为10时,自幂数称为十全十美数,只有1个:4679307774。
最近自学了python,网上关于代码有很多种算法,其中之一的循环算法很经典

[python]  view plain  copy
  1. #如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。  
  2. #例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。  
  3. for i in range(10,1000):  
  4.     sum=0 #各个位数的立方和  
  5.     temp=i  
  6.     while temp:  
  7.         sum=sum+(temp%10)**3   #累加  
  8.         temp//=10   #地板除  
  9.     if sum==i:  
  10.         print(i)  
代码中用到循环语句,
1,第一次循环
sum = sum +(temp%10)**3 意思就是取temp的个位数的立方
temp//=10 意思是除以10,整除去掉余数(例如:283//10=28)也叫地板除
2,第二次循环
sum= sum+(temp%10)**3 这时temp已经变成两位数,现在除10取余数就相当于原数据的十位,二sum=个位的立方(sum)+原数据十位的立方
这是的原理就是一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数,
当然用字符串表示就是
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
for i in range(100,1000):
    if i ==sum(int(c)**3 for c in str(i)):
        print (i)



 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值