质因子只有2,3,5的数被称为丑陋数,为了方便1也被称为丑陋数。编写一个C语言程序。输入一个数x,找出与x最接近的丑陋数
时间: 2023-01-31 19:01:27 浏览: 100
好的,首先我们来分析一下这道题目的要求:
- 输入一个数 x。
- 找出与 x 最接近的丑陋数。
我们可以先定义一个函数,来判断一个数是否是丑陋数。
```c
// 判断一个数是否是丑陋数
bool is_ugly(int num) {
// 如果 num 是 1,那么它也是丑陋数
if (num == 1) {
return true;
}
// 循环判断 num 是否能被 2、3、5 整除
while (num % 2 == 0) {
num /= 2;
}
while (num % 3 == 0) {
num /= 3;
}
while (num % 5 == 0) {
num /= 5;
}
// 如果 num 不能被 2、3、5 整除,那么它不是丑陋数
if (num != 1) {
return false;
}
// 否则,它是丑陋数
return true;
}
```
然后我们可以定义一个函数,来找出与 x 最接近的丑陋数。
```c
// 找出与 x 最接近的丑陋数
int find_nearest_ugly(int x) {
// 如果 x 本身就是丑陋数,直接返回
if (is_ugly(x)) {
return x;
}
// 否则,分别向大、向小搜索,直到找到丑陋数
int up = x;
int down = x;
while (true) {
up++;
if (is_ugly(up)) {
break;
}
down--;
if (is_ugly(down)) {
break;
}
}
// 取 up 和 down 与 x 的距离的最小值,返回对应的丑陋数
if (abs(up - x) < abs(down - x)) {
return up;
} else {