【发布时间】:2015-12-18 03:43:18
【问题描述】:
我正在做这个问题:
编写一个程序来检查给定的数字是否是丑数。
丑数是正数,其质因数仅包括 2、3、5。例如,6、8 丑陋,而 14 不丑,因为它包含另一个质因数 7。
请注意,1 通常被视为丑数。
这是我的尝试:
public class Solution {
public boolean isUgly(int num) {
if (num == 1) {
return true;
}
for (int i = 7; i <= num / 2; i++) {
if (isPrimeFactor(i, num)) {
return false;
}
}
return true;
}
public boolean isPrimeFactor(int candidate, int num) {
return isPrime(candidate) && isFactor(candidate, num);
}
public boolean isPrime(int num) {
if (num == 2) {
return true;
}
if (num % 2 == 0) {
return false;
}
for (int i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i == 0) {
return false;
}
}
return true;
}
public boolean isFactor(int candidate, int num) {
return (num % candidate == 0);
}
}
不幸的是,它在测试输入 -2147483648 上失败。它应该为假时返回真。
知道我做错了什么吗?
【问题讨论】:
-
通过调试器运行您的代码并告诉我们自己
标签: java