Python:关于sum=0的位置选择问题

发生背景

背景:
如果一个数等于它的各个因子之和,那么这个数就是“完数”。例如,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)

img

###### 我想要达到的结果
6
28
496

因为sum是单独一个数的各个因子之和
你要把sum=0放入循环内, 这样每测试一个数之前sum都要重置为0
之后内循环中sum只累加单独一个数的各个因子之和
如果sum=0在循环之前, 只是初始时sum设置为0, 测试下一个数之前sum不会重置为0, 这样sum会一直累加
上一个数的各个因子之和会与下一个数的各个因子之和累加到一起,结果自然不对了

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img



```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

```

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632