如果將數字的每個位數分別提升到總位數的冪,然後將這些子部分相加,得到的結果等於該數字,則稱該數字為阿姆斯特朗數。在這個Python範例中,使用兩個不同的例子,給出了找到n位阿姆斯壯數總和的方法。在範例1中,給出了計算所有3位阿姆斯壯數總和的方法。在範例2中,使用者可以在運行時決定位數。該程式使用4到6位數進行測試。
#步驟 1 - 取得所有三位數的清單。將該列表稱為listofallNums。
第 2 步 - 建立一個函數,如果計算的總和等於數字本身,則傳回一個數字的 3 次方所有數字的總和,否則將傳回-1。
步驟 3 − 對於listofallNums中的所有數字,呼叫上述函數,如果值不為-1,則將其新增至名為listofArmStrNums的清單中。
步驟 4 - 驗證 ArmStrNums 清單中的所有數字都是 3 位的 armStrong 數字。現在將所有這些 3 位 ArmStrong 數字相加。
第 5 步 - 執行程序,然後檢查結果。
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 )
要查看結果,請在命令列視窗中執行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:在命令視窗中顯示結果。
#步驟 1 - 輸入數字的值 N 並取得所有 N 位數字的清單。將該清單稱為 listofallNums。
第 2 步 - 建立一個函數,如果計算的總和等於數字本身,則傳回 N 次方所有數字的總和,否則將傳回-1。
步驟 3 − 對於listofallNums中的所有數字,呼叫上述函數,如果值不為-1,則將其新增至名為listofArmStrNums的清單中。
步驟 4 − 驗證清單listofArmStrNums中的所有數字是否為N位數的阿姆斯壯數。現在將所有這些N位數的阿姆斯壯數相加。
第 5 步 - 執行程序,然後檢查結果中是否有 4 位數字和 5 位數字。
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 )
開啟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中文網其他相關文章!