|
发表于 2016-6-24 02:03:25
|
显示全部楼层
- import time
- import itertools
- from functools import reduce
- def primefactors(n):
- f = 2
- while f * f <= n:
- while not n % f:
- yield f
- n //= f
- f += 1
- if n > 1:
- yield n
- t = time.time()
- #to get all the abundunt numbers below 28123
- s = {i for i in range(1,28124) if sum({reduce(lambda x,y:x*y,item) for num in range(1,len(list(primefactors(i)))) for item in itertools.combinations(list(primefactors(i)),num)})+1 > i}
- l = sorted(list(s))
- summ_l = sum(range(1,28124))
- summ = 0
- for i in range(1,28124):
- for j in l:
- if i -j <= 0:
- break
- if j in s and i-j in s:
- summ += i
- break
- result = summ_l-summ
- print(result)
- print(time.time()-t)
复制代码 |
评分
-
查看全部评分
|