【发布时间】:2018-07-25 17:54:59
【问题描述】:
程序要求用户输入一个数字N。
-
该程序应该显示 0-N 范围内的所有“超级数字”数字。
超数:是一个数,它的阶乘之和 数字等于数字。
示例:
- 12 != 1! + 2! = 1 + 2 = 3(不是超级)
- 145 = 1! + 4! + 5! = 1 + 24 + 120(超级)
-
我似乎陷入困境的部分是程序显示范围 0-N 中的所有“超级数字”数字。我已经得出结论,我需要一个循环来解决这个问题,但我不知道该怎么做。因此,例如,该程序应该读取 0-50 之间的所有数字,并且只要数字是超级的,它就会显示它。所以它只显示1和2,因为它们被认为是超级的
enter integer: 50 2 is super 1 is super -
我写了两个函数;第一个是常规阶乘程序,第二个是对数字的阶乘求和的程序:
number = int(input ("enter integer: ")) def factorial (n): result = 1 i = n * (n-1) while n >= 1: result = result * n n = n-1 return result #print(factorial(number)) def breakdown (n): breakdown_num = 0 remainder = 0 if n < 10: breakdown_num += factorial(n) return breakdown_num else: while n > 10: digit = n % 10 remainder = n // 10 breakdown_num += factorial(digit) #print (str(digit)) #print(str(breakdown_num)) n = remainder if n < 10 : #print (str(remainder)) breakdown_num += factorial(remainder) #print (str(breakdown_num)) return breakdown_num #print(breakdown(number)) if (breakdown(number)) == number: print(str(number)+ " is super")
【问题讨论】:
-
创建一个接受单个数字并返回它是否为“超级”的函数。你会发现这个功能很有用。
-
对于“如何迭代一堆数字”这个问题有很多文字......还是我误解了这个问题?
-
@Aran-Fey 只是想为这个问题提供上下文
标签: python python-3.x