python123题目——自幂数
自幂数类型:字符串。
·
自幂数
类型:字符串
描述
自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身,例如:1**3 + 5**3 + 3**3 = 153,编程寻找并输出 n 位的自幂数,n 由用户输入,每行输出一个数字。
- n为1时,自幂数称为独身数。显然,0,1,2,3, 4,5,6,7,8,9都是自幂数。
- n为2时,没有自幂数。
- n为3时,自幂数称为水仙花数,有4个
- n为4时,自幂数称为四叶玫瑰数,共有3个
- n为5时,自幂数称为五角星数,共有3个
- n为6时,自幂数称为六合数, 只有1个
- n为7时,自幂数称为北斗七星数, 共有4个
- n为8时,自幂数称为八仙数, 共有3个
- n为9时,自幂数称为九九重阳数,共有4个
- n为10时,自幂数称为十全十美数,只有1个
输入格式
输入一个大于或等于 3 且小于 7 的正整数 n
输出格式
按从小到大的顺序输出 n 位的自幂数,每行一个数
示例 1
输入:
4
输出:
1634
8208
9474
参考代码
def armstrong_number(num):
"""接受一个正整数为参数,判断是否是自幂数,返回布尔值"""
total,tmp = 0,num
while tmp != 0:
total = total + table[tmp % 10]
tmp = tmp // 10
return num == total
def judge_num(n):
"""接受一个大于2的正整数为参数,输出n位自幂数"""
for num in range(10 ** (n - 1), 10 ** n):
if armstrong_number(num):
print(num)
if __name__ == '__main__':
m = int(input())
table = [x ** m for x in range(11)]
judge_num(m)
或后面这种,原理上一样,只是在判断自幂数的时候需要对每一位进行操作,或许变为字符串可以更简单的实现这一点。
def armstrong_number(num):
"""接受一个正整数为参数,判断是否是自幂数,返回布尔值"""
total = 0
for i in str(num):
total = total + table[int(i)]
if num == total:
return True
else:
return False
def judge_num(n):
"""接受一个大于2的正整数为参数,输出n位自幂数"""
for num in range(10 ** (n - 1), 10 ** n):
if armstrong_number(num):
print(num)
if __name__ == '__main__':
m = int(input())
table = [x ** m for x in range(10)]
judge_num(m)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献20条内容
所有评论(0)