python求完数

“”"
题目:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出n以内的所有完数。

分析:
将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身
“”"

① 循环嵌套

count = 0
for i in range(1,1000):   
    for j in range(1,i):
        if i%j==0:
            count +=j
    if(count == i):
         print(i,"是完数")

    count=0

② 利用列表

factor=[] 
for i in range(1,1000):
    for j in range(1,i):
        if i % j ==0:
            factor.append(j)
    if sum(factor)==i:
        print(i,"是完数")

    factor=[]

③ 函数

def n(n):
    count = 0
    for i in range(1,n):
        if n%i==0:
            count +=i
    if count==n:
        return True
    else:
        return False

for i in range(1,1001):# 1-1000判断
    if n(i):
        print(i)

④ 输入一个数判断是否为完数

1. for循环实现

a = int(input('::'))

c = 0
for i in range(1,a):
    if a%i == 0:
         c+=i
if c==a:
    print('这个数是完数')
else:
    print('这个数不是完数')

2.while循环实现

n = int(input('::'))
c1 = 0
i = 1 
while i<=n-1: # 注意:要小于n
    if n%i == 0:
         c1+=i
    i+=1
if c1==n:
    print('这个数是完数')
else:
    print('这个数不是完数')

⑤ 方式五

for i in range(1,1000):
    s = i
    for j in range(1,i):
        if i % j==0:
            s -= j
    if s == 0:
        print(i,'完数')
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024节

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值