什么是丑数?
丑数是指只包含2、3、5因子的正整数,最小的丑数为1,根据定义,所有的丑数都可以由1乘以2、3或5得到。
举例来说,前10个丑数分别为:1、2、3、4、5、6、8、9、10、12。
判断一个数字是否是丑数的方法
要判断一个数字是否是丑数,可以采用以下步骤:
Step 1 :判断数字是否大于0
只有大于0的数字才可能是丑数,因此需要首先判断数字是否大于0。
public boolean isUgly(int num) {
if (num <= 0) {
return false;
}
//...
}
Step 2 :循环判断是否可以被2、3、5整除
如果数字大于0,那么就需要循环判断这个数字能否被2、3、5整除,如果可以的话,将该数字除以2、3或5,再判断结果是否能被2、3、5整除。直到最终得到1。
在判断是否能被2、3、5整除时,可以使用取余运算符%来判断。
public boolean isUgly(int num) {
if (num <= 0) {
return false;
}
while (num % 2 == 0) {
num /= 2;
}
while (num % 3 == 0) {
num /= 3;
}
while (num % 5 == 0) {
num /= 5;
}
return num == 1;
}
完整代码
将上述两个步骤合并起来,得到完整代码如下:
public boolean isUgly(int num) {
if (num <= 0) {
return false;
}
while (num % 2 == 0) {
num /= 2;
}
while (num % 3 == 0) {
num /= 3;
}
while (num % 5 == 0) {
num /= 5;
}
return num == 1;
}
测试丑数判断方法
我们可以使用JUnit框架编写测试用例来测试丑数判断方法。
下面是两个测试用例:
测试用例1:判断17是否是丑数
17无法被2、3、5整除,因此不是丑数。
@Test
public void testIsUgly1() {
assertFalse(isUgly(17));
}
测试用例2:判断10是否是丑数
10可以被2和5整除,因此是丑数。
@Test
public void testIsUgly2() {
assertTrue(isUgly(10));
}
总结
本文介绍了如何在Java中判断一个数字是否是丑数,通过判断数字能否被2、3、5整除,最终得到1,可以判断该数字是否是丑数。