Python程序获取N个阿姆斯特朗数的总和
如果将数字的每个位数分别提升到总位数的幂,然后将这些子部分相加,得到的结果等于该数字,则称该数字为阿姆斯特朗数。在这个Python示例中,使用两个不同的例子,给出了找到n位阿姆斯特朗数总和的方法。在示例1中,给出了计算所有3位阿姆斯特朗数总和的方法。在示例2中,用户可以在运行时决定位数。该程序使用4到6位数进行测试。
Example 1 - 找出所有3位数的阿姆斯特朗数之和。
Algorithm
的中文翻译为:算法
步骤 1 - 获取所有三位数的列表。将该列表称为listofallNums。
第 2 步 - 创建一个函数,如果计算出的总和等于数字本身,则返回一个数字的 3 次方所有数字的总和,否则将返回-1。
步骤 3 − 对于listofallNums中的所有数字,调用上述函数,如果值不为-1,则将其添加到名为listofArmStrNums的列表中。
立即学习“Python免费学习笔记(深入)”;
步骤 4 - 验证 ArmStrNums 列表中的所有数字都是 3 位的 armStrong 数字。现在将所有这些 3 位 ArmStrong 数字相加。
第 5 步 - 运行程序,然后检查结果。
Python 文件包含此内容
numOfDigits=3listofallNums=[]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)-1print("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=0for element in listofArmStrNums: SumofallArmStrongnumbers = SumofallArmStrongnumbers + element print("Sum of all 3 digit ArmStrong numbers is ", SumofallArmStrongnumbers )
查看结果 - 示例 1
要查看结果,请在命令行窗口中运行Python文件。
listofallNums contains numbers from 100 to 999This is an Armstrong number 153This is an Armstrong number 370This is an Armstrong number 371This is an Armstrong number 407List 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:407Sum of all 3 digit ArmStrong numbers is 1301
图1:在命令窗口中显示结果。
Example 2:找出所有n位阿姆斯特朗数的和。
Algorithm
的中文翻译为:算法
步骤 1 - 输入数字的值 N 并获取所有 N 位数字的列表。将该列表称为 listofallNums。
第 2 步 - 创建一个函数,如果计算出的总和等于数字本身,则返回 N 次方所有数字的总和,否则将返回-1。
步骤 3 − 对于listofallNums中的所有数字,调用上述函数,如果值不为-1,则将其添加到名为listofArmStrNums的列表中。
立即学习“Python免费学习笔记(深入)”;
步骤 4 − 验证列表listofArmStrNums中的所有数字是否为N位数的阿姆斯特朗数。现在将所有这些N位数的阿姆斯特朗数相加。
第 5 步 - 运行程序,然后检查结果中是否有 4 位数字和 5 位数字。
Python 文件包含此内容
numOfDigits = 5listofallNums=[]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)-1print("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=0for 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 99999This is an Armstrong number 54748This is an Armstrong number 92727This is an Armstrong number 93084List of ArmStrong Numbers: [54748, 92727, 93084]list of sum subparts: [32768, 1024, 16807, 1024, 3125]adding together:54748list of sum subparts: [16807, 32, 16807, 32, 59049]adding together:92727list of sum subparts: [1024, 32768, 0, 243, 59049]adding together:93084Sum of all 5 digit ArmStrong numbers is 240559
图 2:显示总和和 n 位阿姆斯特朗数。
在这篇Python文章中,使用两个不同的例子,给出了找到n位阿姆斯特朗数总和的方法。在示例1中,给出了计算所有3位阿姆斯特朗数之和的方法。在示例2中,用户可以在运行时决定数字的位数。如果用户输入4,则给出所有4位阿姆斯特朗数及其总和。