“”"
题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如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,'完数')