在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到1*10^18对象之间的大范围内快速迭代

您不需要在范围上循环并检查可分割性,因为[1,10^18]中唯一可被X整除的数字是i * X,其中i的范围从110^18 / X,并且正好有10^18 / X这样的数字。如果X很小,这可能仍然是很多的数字。

是的。学习GPU编程。你需要尽可能多的核心,然后需要大量的时间。

1*10^18方需要花费大量时间。真的很长时间了。没有办法神奇地绕过它。

一套具有适当编程的高端显卡会有所帮助——它们不是超级快,但每个都有数千个内核。。。。。并且正是为此而生。