gpt4 book ai didi

Java:因式分解时输出不正确

转载 作者:行者123 更新时间:2023-12-01 18:12:12 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来确定一个数字是否“丑陋”。对于一个“丑陋”的数字,它必须没有除 2、3 或 5 之外的质因数。

这是我的尝试:

public class Solution {

public boolean isPrime(int num) {
if (num == 2) {
return true;
}
if (num % 2 == 0) {
return false;
}
if (num < 0) {
num *= -1;
}
for (int i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i == 0) {
return false;
}
}
return true;
}

public boolean isUgly(int num) {
if (num < 0) {
num *= -1;
}
for (int i = 7; i <= Math.sqrt(num); i += 2) {
if ((num % i == 0) && isPrime(num)) {
return false;
}
}
return true;
}

}

当输入 = -2147483648 应该为 false 时,我却得到了 true。这里有可能溢出吗?我已经检查了我的代码,逻辑对我来说是正确的......

谢谢!

最佳答案

问题是Integer.MIN_VALUE*-1 = Integer.MIN_VALUE导致Math.sqrt(Integer.MIN_VALUE)返回 NaN为负数,因此当您执行此操作时 7 <= Math.sqrt(Integer.MIN_VALUE)它返回 false,甚至不进入 for 循环,导致程序返回 true。

我希望这个解释有帮助。

关于Java:因式分解时输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32157014/

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