Python学习:作业02_用Python求1000以内的完全数

本文介绍了一种算法来找出1000以内的所有完全数,即那些等于其所有真因子之和的整数。通过两种不同的Python实现方法展示了如何找到这些数学上的特殊数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果一个数恰好等于它的因子之和,那这个数就是完全数,比如第一个数是6,它的约数有1,2,3,6,除去6本身外6=1+2+3,第二个完全数是28=1+2+4+7+14,那么问题来了:求出1000以内完全数。

分析过程:首先,要求出一个数字n的所有因子,即对1-n分别取余,余数为0即可;其次,再将这个数的所有因子(除了n本身)求和,如果等于n, 那么n就是完全数(perfect number)。

 

#  -*- coding:utf-8 -*-
#  coding=utf-8
#  coding:utf-8

# 方法1:
a = range(1,1000)
b = range(1,1000)
perfectnum = []
for i in a:
    temp = []
    for j in b:
        if j < i:
            if i%j==0:
                temp.append(j)
            else:
                continue
        else:
            break
    count = 0
    for m in temp:
        count = count + m
    if count ==i:
        perfectnum.append(i)
    else:
        continue
print(perfectnum)

# 方法二:
for aa in range(1,1000):
    sum = 0
    for o in range(1,aa):
        if aa%o == 0:
            sum += o
    if sum == aa:
        print(aa)

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值