在1到1*10^18对象之间的大范围内快速迭代
本文关键字:范围内 迭代 之间 对象 | 更新日期: 2023-09-27 18:00:23
我在类型long中指定了一个范围,该范围可以从1到1*10^18(包括1和1*10^18),对于该范围之间的每个值,我都会进行可分割性检查。我测试了一个for循环,看看这样的迭代需要多长时间(没有操作,只有循环)。我发现答案太长了。我不熟悉另一种优雅地做到这一点的方法。有人能分享一些想法吗
任务:
可能的例子;从N=1到N=1*10^18,如果N可以被X整除,做点什么。返回可被X 整除的N个值的数目
约束,<结果为2秒
您不需要在范围上循环并检查可分割性,因为[1,10^18]
中唯一可被X
整除的数字是i * X
,其中i
的范围从1
到10^18 / X
,并且正好有10^18 / X
这样的数字。如果X
很小,这可能仍然是很多的数字。
是的。学习GPU编程。你需要尽可能多的核心,然后需要大量的时间。
1*10^18方需要花费大量时间。真的很长时间了。没有办法神奇地绕过它。
一套具有适当编程的高端显卡会有所帮助——它们不是超级快,但每个都有数千个内核。。。。。并且正是为此而生。