背景:
如果一个数等于它的各个因子之和,那么这个数就是“完数”。例如,6=1+2+3,。编写
程序,求出 1000 以内的所有完数
sum=0
for x in range(1,1001):
for y in range(1,x):
if x%y==0:
sum+=y
if sum==x:
print(x)
runfile('C:/Users/Admin/.spyder-py3/untitled0.py', wdir='C:/Users/Admin/.spyder-py3')
运行结果无显示
把sum=0放入循环内
for x in range(1,1001):
sum=0
for y in range(1,x):
if x%y==0:
sum+=y
if sum==x:
print(x)
###### 我想要达到的结果
6
28
496
因为sum是单独一个数的各个因子之和
你要把sum=0放入循环内, 这样每测试一个数之前sum都要重置为0
之后内循环中sum只累加单独一个数的各个因子之和
如果sum=0在循环之前, 只是初始时sum设置为0, 测试下一个数之前sum不会重置为0, 这样sum会一直累加
上一个数的各个因子之和会与下一个数的各个因子之和累加到一起,结果自然不对了
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
```python
for x in range(1, 1001):
sum = 0
for y in range(1, x):
if x % y == 0:
sum += y
if sum == x and y > x / 2:
print(x)
break
```
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!