减少循环工作时间的巨大数字

时间:2017-10-31 16:49:59

标签: python loops time

i = 1
d = 1
e = 20199
a = 10242248284272

while(True):
  print(i)
  if((i*e)%a == 1):
      d = i
      break
  i = i + 1

给出数字来表示它们的长度。

我有一段Python代码适用于非常庞大的数字,我不得不等待一天或两天。如何减少代码运行所需的时间?

1 个答案:

答案 0 :(得分:0)

你可以做很多事情来加快速度;是否足够是另一回事。

  • 避免打印您不必要的东西。
  • 避免乘法。您可以使用一个新变量(例如i*e来保存此值,而不是每次迭代计算i_e。每次增加i时,都可以向其添加e
  • 浩瀚您的大多数迭代都不接近满足(i*e)%a==1。如果您对i使用了更大的增量,则可以避免对大多数增量进行测试。当然,你必须小心不要过冲。
  • 因为您正在进行模运算,所以您不需要在测试中使用i的完整值(尽管您仍然需要跟踪它,输出结果)
  • 结合前两点,您可以避免计算模数:如果您知道a<=x<2*a,则x-a==1相当于x%a==1

这些都不足以降低问题的复杂性,但可能足以减少常数因素,以便为您的目的加快速度。