首頁 >後端開發 >Python教學 >Python程式取得N個阿姆斯壯數的總和

Python程式取得N個阿姆斯壯數的總和

WBOY
WBOY轉載
2023-09-12 10:41:02622瀏覽

Python程式取得N個阿姆斯壯數的總和

如果將數字的每個位數分別提升到總位數的冪,然後將這些子部分相加,得到的結果等於該數字,則稱該數字為阿姆斯特朗數。在這個Python範例中,使用兩個不同的例子,給出了找到n位阿姆斯壯數總和的方法。在範例1中,給出了計算所有3位阿姆斯壯數總和的方法。在範例2中,使用者可以在運行時決定位數。該程式使用4到6位數進行測試。

Example 1 - 找出所有3位數的阿姆斯壯數總和。

Algorithm

的中文翻譯為:

演算法

#步驟 1 - 取得所有三位數的清單。將該列表稱為listofallNums。

第 2 步 - 建立一個函數,如果計算的總和等於數字本身,則傳回一個數字的 3 次方所有數字的總和,否則將傳回-1。

步驟 3 − 對於listofallNums中的所有數字,呼叫上述函數,如果值不為-1,則將其新增至名為listofArmStrNums的清單中。

步驟 4 - 驗證 ArmStrNums 清單中的所有數字都是 3 位的 armStrong 數字。現在將所有這些 3 位 ArmStrong 數字相加。

第 5 步 - 執行程序,然後檢查結果。

Python 檔案包含此內容

numOfDigits=3
listofallNums=[]
listofArmStrNums=[]
listofsumparts=[]

def isArmStr(num, powof):
   sum = 0
   TNum = num
   while TNum > 0:
      digitt = TNum % 10
      sum += digitt ** powof
      TNum = TNum//10
    
   if sum==num:
      print('This is an Armstrong number', num)
      return sum
   else:
      return -1  

lowerNum=10**(numOfDigits-1)
highNum=10**(numOfDigits)

for item in range(lowerNum, highNum):
   listofallNums.append(item)
lastelem=len(listofallNums)-1
print("listofallNums contains numbers from ",listofallNums[0], " to ", listofallNums[lastelem])

for itemn in listofallNums:
   if(isArmStr(itemn, numOfDigits) != -1):
      listofArmStrNums.append(itemn)

print("List of ArmStrong Numbers: ", listofArmStrNums)

for elem in listofArmStrNums:
   listofsumparts=[]
   summ=0
   while elem > 0:
      digittt = elem % 10
      listofsumparts.append(digittt ** numOfDigits)
      elem = elem//10
   print(listofsumparts)

   total=0
   print("adding together: ")
   for ele in range(0,len(listofsumparts)):
      total = total + listofsumparts[ele]
   print(total)  


SumofallArmStrongnumbers=0
for element in listofArmStrNums:
   SumofallArmStrongnumbers = SumofallArmStrongnumbers + element
    
print("Sum of all 3 digit ArmStrong numbers is ", SumofallArmStrongnumbers )

查看結果 - 範例 1

要查看結果,請在命令列視窗中執行Python檔案。

listofallNums contains numbers from  100  to  999
This is an Armstrong number 153
This is an Armstrong number 370
This is an Armstrong number 371
This is an Armstrong number 407
List of ArmStrong Numbers:  [153, 370, 371, 407]
[27, 125, 1]
adding together:
153
[0, 343, 27]
adding together:
370
[1, 343, 27]
adding together:
371
[343, 0, 64]
adding together:
407
Sum of all 3 digit ArmStrong numbers is  1301

圖1:在命令視窗中顯示結果。

Example 2:找出所有n位阿姆斯特朗數的和。

Algorithm

的中文翻譯為:

演算法

#步驟 1 - 輸入數字的值 N 並取得所有 N 位數字的清單。將該清單稱為 listofallNums。

第 2 步 - 建立一個函數,如果計算的總和等於數字本身,則傳回 N 次方所有數字的總和,否則將傳回-1。

步驟 3 − 對於listofallNums中的所有數字,呼叫上述函數,如果值不為-1,則將其新增至名為listofArmStrNums的清單中。

步驟 4 − 驗證清單listofArmStrNums中的所有數字是否為N位數的阿姆斯壯數。現在將所有這些N位數的阿姆斯壯數相加。

第 5 步 - 執行程序,然後檢查結果中是否有 4 位數字和 5 位數字。

Python 檔案包含此內容

numOfDigits = 5
listofallNums=[]
listofArmStrNums=[]
listofsumparts=[]

def isArmStr(num, powof):
   sum = 0
   TNum = num
   while TNum > 0:
      digitt = TNum % 10
      sum += digitt ** powof
      TNum = TNum//10
    
   if sum==num:
      print('This is an Armstrong number', num)
      return sum
   else:
      return -1  

lowerNum=10**(numOfDigits-1)
highNum=10**(numOfDigits)

for item in range(lowerNum, highNum):
   listofallNums.append(item)
lastelem=len(listofallNums)-1
print("listofallNums contains numbers from ",listofallNums[0], " to ", listofallNums[lastelem])

for itemn in listofallNums:
   if(isArmStr(itemn, numOfDigits) != -1):
      listofArmStrNums.append(itemn)

print("List of ArmStrong Numbers: ", listofArmStrNums)

for elem in listofArmStrNums:
   listofsumparts=[]
   summ=0
   while elem > 0:
      digittt = elem % 10
      listofsumparts.append(digittt ** numOfDigits)
      elem = elem//10
   print("list of sum subparts: ", listofsumparts)

   total=0
   print("adding together: ")
   for ele in range(0,len(listofsumparts)):
      total = total + listofsumparts[ele]
   print(total)   

SumofallArmStrongnumbers=0
for element in listofArmStrNums:
   SumofallArmStrongnumbers = SumofallArmStrongnumbers + element
    
print("Sum of all ", numOfDigits, " digit ArmStrong numbers is ", SumofallArmStrongnumbers )

查看結果 - 範例2

開啟cmd視窗並執行python檔案以查看結果。

listofallNums contains numbers from  10000  to  99999
This is an Armstrong number 54748
This is an Armstrong number 92727
This is an Armstrong number 93084
List of ArmStrong Numbers:  [54748, 92727, 93084]
list of sum subparts:  [32768, 1024, 16807, 1024, 3125]
adding together:
54748
list of sum subparts:  [16807, 32, 16807, 32, 59049]
adding together:
92727
list of sum subparts:  [1024, 32768, 0, 243, 59049]
adding together:
93084
Sum of all  5  digit ArmStrong numbers is  240559

圖 2:顯示總和和 n 位元阿姆斯壯數。

在這篇Python文章中,使用兩個不同的例子,給出了找到n位阿姆斯壯數總和的方法。在範例1中,給出了計算所有3位阿姆斯壯數總和的方法。在範例2中,使用者可以在執行時決定數字的位數。如果使用者輸入4,則給出所有4位阿姆斯特朗數及其總和。

以上是Python程式取得N個阿姆斯壯數的總和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除