【发布时间】:2019-09-16 12:42:15
【问题描述】:
我有一个算法,它提供从 1 到 N 的整数因子。代码如下提供,
public static int solution(int N) {
int count = 0;
for (int i = 1; (i * i) <= N; i++) {
if (i * i == N) {
count++;
return count;
}
if (N % i == 0) {
count += 2;
}
}
return count;
}
这很好用,但是对于非常大的整数值显然会中断,例如Integer.MAX_VALUE。如何改进非常大的值的代码?
【问题讨论】:
-
你可以使用 BigInteger 代替 int
-
这段代码是找到
N的除数还是它的因子?不管怎样count都不对 -
你可以用
longs,还不够,那就是:BigInteger。 -
@ernest_k 计数哪里出错了?你的意思是负值?
-
@JudeNiroshan 任何最佳解决方案都将包括更多数学运算,可能是
N的素因数分解,您可以从中直接计算除数。
标签: java algorithm performance