int isUglyNum(int num) { if (num == 1) { return 1; } for (int i = 2; i < num; i++) { if ((num%i==0)&&(i==2||i==3||i==5)) { return 1; } } return 0; }这个函数在C语言中能判断一个数是否为丑数,如果不行,具体说说逻辑哪错了,并且给出判断丑数的底层逻辑
时间: 2023-12-01 10:04:01 浏览: 72
C++如何判断一个数字是否为质数
5星 · 资源好评率100%
这个函数的逻辑有误,因为当num为质数时,会返回错误的结果。
丑数指的是只包含质因数2、3、5的正整数,因此可以使用以下底层逻辑来判断一个数是否为丑数:
1. 当num小于等于0时,不是丑数。
2. 当num能被2整除,则用num除以2,直到num不能再被2整除。
3. 当num能被3整除,则用num除以3,直到num不能再被3整除。
4. 当num能被5整除,则用num除以5,直到num不能再被5整除。
5. 如果最终num的值为1,则num是丑数;否则,num不是丑数。
下面是实现一个判断丑数的函数的示例代码:
```
int isUglyNum(int num) {
if (num <= 0) {
return 0;
}
while (num % 2 == 0) {
num /= 2;
}
while (num % 3 == 0) {
num /= 3;
}
while (num % 5 == 0) {
num /= 5;
}
return num == 1;
}
```
这个函数会返回1表示是丑数,返回0表示不是丑数。
阅读全文