求完全数个数
题面
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000
返回n以内完全数的个数。 异常情况返回-1
分析
- 断言完全数
- 平方根缩小范围,求商求模得另一因数
- 记录潜在完全数的因数入列表并求和
- 边界处理
方案
入队
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序
N = int(input().strip())
arr = [int(i) for i in (input().split(" ")[:N])]
val = int(input().strip())
def asc_sort(arr,val):
k=-1
for i,v in enumerate(arr):
if val <= v:
k = i
break
if k != -1:
arr.insert(k,val)
else:
arr.append(val)
asc_sort(arr,val)
print(*arr)
输出
(base) D:\code-base\python\test>python -u "d:\code-base\python\test\in2.py"
5
1 6 9 22 30
8
1 6 8 9 22 30
阶乘
计 1!+2!+3!+…+n!
def fac(n):
if n == 1:
return 1
return n *fac(n-1)
n = int(input())
print(sum(map(fac, range(1,n+1))))
输出
(base) D:\code-base\python\test>python -u "d:\code-base\python\test\xll.py"
3
9
本作品采用《CC 协议》,转载必须注明作者和本文链接