我有一个long类型指定的范围,可以从1和1 * 10 ^ 18(包括1和1 * 10 ^ 18)一样大,对于这个范围之间的每个值,我做一个可除性检查。我测试了一个for循环,看看这样的迭代需要多长时间(没有操作只是循环)。我发现的答案太长了。我不熟悉另一种优雅地做到这一点的方法。任何人都可以分享一些想法
任务:
可能的例子; 从N = 1到N = 1 * 10 ^ 18,如果N可被X整除则做某事。返回可被X整除的N个值的数量约束,< = 2秒的结果
答案 0 :(得分:2)
您不需要遍历范围并检查可分性,因为[1,10^18]
中X
可以被i * X
整除的唯一数字是i
,其中1
的范围是10^18 / X
{1}}到10^18 / X
并且确实有X
个这样的数字。如果{{1}}很小,这可能仍然是很多的数字。
答案 1 :(得分:-1)
呀。学习GPU编程。你需要尽可能多的核心,然后需要很多时间。
1 * 10 ^ 18方将花费大量时间。认真的很长时间。没办法神奇地绕过它。一组具有适当编程功能的高端显卡可以提供帮助 - 它们不是超级快,但它们每个都有数千个内核.....并且正是为此而制造的。