PHP前端开发

Python程序获取N个阿姆斯特朗数的总和

百变鹏仔 3个月前 (01-19) #Python
文章标签 总和

如果将数字的每个位数分别提升到总位数的幂,然后将这些子部分相加,得到的结果等于该数字,则称该数字为阿姆斯特朗数。在这个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位阿姆斯特朗数及其总和。