自幂数【Python】

  • 内容
  • 相关

问题描述:

    用户输入位数 n,找出并显示出所有 位数的自幂数。所谓自幂数就是指一个n为正整数,如果它的各位数字的 n 次方的和加起来还等于这个数,数学家称这样的数为自幂数。例如1^3+5^3+3^3=153,这样153就是一个 3 位的自幂数,3 位自幂数也称为水仙花数。

问题分析:

    这个示例位数取1-6,所以位数的控制就可以用循环。一个 n 位数,它的最小值是10^(n-1),最大值是10^n-1,因此内存循环可以用一个 for 循环来遍历所有的 n 位数。然后是取每个位数上的数字,一个n位数对10 取余就可以获得个位上的数字,然后被 10 整除再对 10 取余就是十位上的数字,一直重复就可以获得每个位数上的数字,这个过程可以使用 while 循环控制,随着被 10 整除,它就越来越小,当它为 0 的时候,就说明取完了所有的数位。

源程序:

start=0
end=0
digit=0
m=0
n=int(input("请选择自幂数的位数【1,2,3,4,5,6】:"))
while 0<n<7:	#把输入的数字控制在1-6
	start=pow(10,n-1)	#n位数的最小数
	end=pow(10,n)-1	  #n位数的最小数
	print(n,"位数的自幂数有:")
	for i in range(start,end+1):	#遍历所有n位数
		m=i
		total=0
		while m!=0:	#得到每一位数
			digit=m%10
			total+=pow(digit,n)  #每一位数字的n次方累加
			m=m//10	#整除(去掉刚刚已经累加过的位数上的数
		if total==i:	#判断是否是自幂数,如果是则显示
			print(str(i),end='  ')
	n=int(input("\n请选择自幂数的位数【1,2,3,4,5,6】:"))
else:
	print('输入位数不在范围内!')

输出:

请选择自幂数的位数【1,2,3,4,5,6】:5
5 位数的自幂数有:
54748  92727  93084
请选择自幂数的位数【1,2,3,4,5,6】:6
6 位数的自幂数有:
548834
请选择自幂数的位数【1,2,3,4,5,6】:7
输入位数不在范围内!

本文标签:

版权声明:若无特殊注明,本文皆为《尤尤》原创,转载请保留文章出处。

本文链接:自幂数【Python】 - https://www.yxfseo.cn/post-171.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注