python - 如何才能减少计算量?大量时效率很低

标签 python

num = input ()
fact = 0
while fact != num:
     fact = fact + 1
     rem = num % fact
     if rem == 0:
          print fact

最佳答案

您只需求输入数字的平方根即可获得所有因数(不像其他地方所建议的那样远到数字的一半)。例如,24 的因数为 1、2、3、4、6、8、12、24。sqrt(24) 约为 4.9。检查1也得到24,检查2也得到12,检查3也得到8,检查4也得到6。因为5>4.9,所以不用检查了。 (是的,我知道 24 不是最好的例子,因为所有小于 sqrt(24) 的整数都是 24 的因数。)

factors = set()
for i in xrange(math.floor(math.sqrt(x))+1):
    if x % i == 0:
        factors.add(i)
        factors.add(x/i)
print factors

有一些非常复杂的方法可以更好地处理大量数据,但这应该可以让您在运行时得到不错的改进。根据您的应用程序,缓存还可以为您节省大量时间。

关于python - 如何才能减少计算量?大量时效率很低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150563/

相关文章:

python - 为什么 PySpark 中的 agg() 一次只能汇总一列?

python - 我应该总是使用 threading.Thread.join()

用于数据框中多个索引的 Python pandas idxmax

python - 为什么 python __slots__ 不节省内存?

python - 模块 pytz : UTC decrease instead of increase

c# - 这在 python 中相当于什么

python - 使用 Huggingface Trainer 与分布式数据并行

python - 使用 MongoDB 列表中的日期字段作为 Pandas DataFrame 中的 DatetimeIndex

python - 如何使用 Scrapy 选择器处理不一致的标记?

python - 如何使用 numpy.delete 过滤项目? (为某些人工作,但不为其他人工作)