本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出最小的N(1 <= N <= 8)个完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。
(注:此题大家不要追求满分,最后两个测试点共占6%,15分的题目只占1分,可以忽略,最后两个测试点需要用优化的方法才可以通过)
输入格式一个正整数N,如:1
输出格式如:6=1+2+3
输入输出示例| 输入 | 输出 | |
| 示例 1 | 1 | 6=1+2+3 |
解题代码:
def isPrime(n): #判断素数的函数
if n < 2:
return False #0和1不是素数
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
else:
return True
def isPerfect(m): #判断完数的函数
if isPrime(m) and isPrime(2**m-1):
s = 2**(m-1)*(2**m-1)
ls.append(s)
for i in range(2, s // 2 + 1):
if s % i == 0:
factor.append(i)
return s
else:
return False
n = int(input())
count,num = 0, 1
ls = []
while count



