1、函数的编写。如果正整数n符合如下条件,则称n为完美数
a)n是正整数;
b)n不是10的倍数(n的末尾不能包含0);
c)k为n去掉0之后所得的数 k不等于n 而且k是n的一个因子(n的中间应至少包括1个0)。
前几个完美数为:105 108 405 1001 1005 1008 2002 2025。要求:
1)编写函数is_perfectnumber(n) 当n为完美数时 返回为真 否则返回为假;
2)编写函数compute_perfectnumber (n) 返回[1,n]范围内的完美数列。
def is_perfectnumber(n):
if n%10 == 0: return False
if '0' not in str(n): return False
k = int(str(n).replace('0',''))
return True if n%k==0 else False
def compute_perfectnumber(n):
num_list = []
for i in range(1,n+1):
if is_perfectnumber(i):num_list.append(i)
return num_list
print(compute_perfectnumber(int(input())))
def is_perfectnumber(n):
flag = True
if not isinstance(n, int):
flag = False
elif n < 1:
flag = False
elif n % 10 == 0:
flag = False
elif '0' not in str(n).strip("0"):
flag = False
else:
k = int(str(n).replace('0', ''))
if k == n or not n % k == 0:
flag = False
return flag
res = is_perfectnumber(105)
def compute_perfectnumber (n):
return list(filter(is_perfectnumber, range(1, n + 1)))
res = compute_perfectnumber(3000)
print(res)