python 打印所有的水仙花數


目標分析:

所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。

例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。

利用for循環控制100-999個數,每個數分解出個位,十位,百位。

解法一:

1 for a in range(1,10):  #  從1開始, 百位不能為0
2     for b in range(10):  #  從0開始, 十位可以為0
3         for c in range(10):  #  從0開始, 個位也可以為0
4             s1= a*100+b*10+c  #  三位數=百位+十位+個位
5             s2= pow(a,3)+pow(b,3)+pow(c,3) #  每個位置的數的n次方之和
6             if s1==s2:
7                 print(s1, "是水仙花數")

解法二:

1 for i in range(100,1000):
2     s = str(i)
3     if int(s[0])**3+int(s[1])**3+int(s[2])**3==i:
4         print(s1, "是水仙花數")

  或者

for i in range(100, 1000):
    a1 = int(str(i)[0]) # 百位
    a2= int(str(i)[1]) # 十位
    a3 = int(str(i)[2]) # 個位
    #判斷    數字  ==  個位 ** 3  + 十位**3  + 百位 ** 3  是否成立
    if i == a1 ** 3 + a2 ** 3 + a3 **3:
        print(i, '--是水仙花數')

  

for i in range(100,1000):
    if pow((i/1)%10,3)+pow(int(i/10)%10,3)+pow(int(i/100)%10,3)==i:
        print(i)

  

for i in range(100,1000):
    j=str(i)
    if int(j[0])**3+int(j[1])**3+int(j[2])**3==i:
        print(i)

  

for i in range(100,1000):
    if i==(i//100)**3+(((i-i%10)/10)%10)**3+(i%10)**3:
        print(i)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM