gpt4 book ai didi

java - Algo 获取 Integer.MAX_VALUE 的超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:22 26 4
gpt4 key购买 nike

我有一个算法,可以提供从 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。如何改进非常大的值的代码?

最佳答案

只需如下更改您的 for 循环条件,它应该可以工作。

 for (int i = 1; (i * i) > 0 && (i * i) <= N; i++) {

由于在 46341 处发生溢出,因此需要进行此更改并且这个数字的任何平方都会导致负值(很可能,因为溢出是一种未定义的行为)并导致满足 (i * i) <= N 的条件并且循环进一步继续。因此,只需添加一个额外的检查,确保正方形应该 > 0 来处理这种情况。

关于java - Algo 获取 Integer.MAX_VALUE 的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com