Але*_*еев 0 python multiprocessing
for i in xrange(1, 600851475141):
if 600851475141 % i == 0:
print i
Run Code Online (Sandbox Code Playgroud)
这花费了太多时间.有可能让它更快吗?
对于每个小于的除数sqrt(N),有一个大于的除数sqrt(N).所以你只需要找到i小于的除数,sqrt(N)并计算互补除数N//i.
import math
N = 600851475141
divisors = []
for i in xrange(1, int(math.sqrt(N))+1):
if N % i == 0:
divisors.extend(set((i, N//i)))
for d in sorted(divisors):
print(d)
Run Code Online (Sandbox Code Playgroud)
产量
1
3
11981
35943
16716787
50150361
200283825047
600851475141
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |