假设要找到 1 到 N 之间所有数字的除数,我们使用:
for (i = 1; i < N; ++i)
for (j = i; j < N; j += i)
factors[j]++;
如果范围是[a,b]
这样的,我们应该怎么做1 < a,b < 10^9 and b-a < 10,000?
如果我们将上面的代码修改为:
for (i = 1; i < b; ++i)
for (j = i; j < b; j += i)
factors[j]++;
如果b = 10^9
. 那么,假设 ba 相对于 a 和 b 较小,而 a 和 b 较大(10^9 或更大),可以进行什么样的优化?
PS。也许我无法很好地解释这个问题。我真正需要找到的是该范围内有多少个数的除数等于一些x <= 100.
谢谢。