【发布时间】:2021-07-31 05:32:41
【问题描述】:
我已经这样做了:-
int divisors(int div, int i) {
int ans = 0;
for (int j = 1; j * j <= div; j++) {
if (div % j == 0) {
if (div / j == j && j < i)ans++;
else {
if (j < i && div / j < i) {
ans += 2;
}
else if (j < i) {
ans += 1;
}
else {
break;
}
}
}
}
return ans;
}
但是这需要 O(sqrt(div)) 时间,我有办法优化吗?
【问题讨论】:
-
你只需要检查素数
-
请添加更多信息以及您在此功能中尝试执行的操作,以便我们更好地帮助您
-
@AlanBirtles 你能提供一个链接或其他东西让我检查吗?
-
@TharunK 我试图找出小于数 k 的数 n 的除数数。例如,我可以找到 12 小于 5 的除数,它们将是 1、2、3 和 4。
-
geeksforgeeks.org/find-divisors-natural-number-set-1 ...我实现了一个版本。
标签: c++ number-theory