如果将数字的每个位数分别提升到总位数的幂,然后将这些子部分相加,得到的结果等于该数字,则称该数字为阿姆斯特朗数。在这个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=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的列表中。
步骤 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位阿姆斯特朗数及其总和。
以上就是python程序获取n个阿姆斯特朗数的总和的详细内容。