【发布时间】:2016-08-28 11:32:02
【问题描述】:
我有以下代码:
def isPP(n):
pos = [int(i) for i in range(n+1)]
pos = pos[2:] ##to ignore the trivial n** 1 == n case
y = []
for i in pos:
for it in pos:
if i** it == n:
y.append((i,it))
#return list((i,it))
#break
if len(y) <1:
return None
else:
return list(y[0])
这在 2000 年之前都可以正常工作,因为我在内存中存储了太多。我该怎么做才能使它有效地处理大量(例如,50000 或 100000)。我在找到一个案例后试图让它结束,但是如果数量很大,我的算法仍然效率太低。
有什么建议吗?
【问题讨论】:
-
你应该意识到这不是
2的力量,早在你到达检查2 ** 99999 == 100000的地步之前...... -
从不考虑破坏如果我**它> n.
-
@nodel,你应该使用日志。我写了一个解释代码和逻辑的答案。看看这是否回答了问题和要求。
标签: python algorithm python-3.x