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.
ありがとう。