酷代码 AI
菜单

我们把只包含素因子2、3和5的数成为丑数。例如6、8都是丑数,但14不是,因为它包含素因子7。 习惯上,我们把1当作是第一个丑数。 先定义一个判断丑数的函数,利用它输出1∼n之间所有的丑数,并统计出个数。 输入 读入一个整数<math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>n</mi> </math><math xmlns="http://www.w3.org/1998/Math/MathML"> <mn>1</mn> <mo>&lt;=</mo> <mi>n</mi> <mo>&lt;=</mo> <mn>1000</mn> </math> , 输出 输出分为两部分: 第一部分,输出1∼ n之间所有的丑数,一行10个整数,每个整数占6个字符。 第二部分, 输出n 以内的丑数个数。 样例输入 复制 100 样例输出 复制 1 2 3 4 5 6 8 9 10 12 15 16 18 20 24

```c #include <stdio.h> // 判断一个数是否为丑数 int isUgly(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; } int main() { int n; scanf("%d", &n); int count = 0; // 统计丑数个数 int lineCount = 0; // 控制每行输出个数 for (int i = 1; i <= n; i++) { if (isUgly(i)) { printf("%6d", i); count++; lineCount++; // 每输出10个换行 if (lineCount == 10) { printf("\n"); lineCount = 0; } } } // 如果最后一行不满10个,需要换行 if (lineCount > 0) { printf("\n"); } // 输出丑数个数 printf("%d\n", count); return 0; } ``` 代码说明: 1. `isUgly`函数判断一个数是否为丑数: - 不断除以2、3、5,直到不能整除为止 - 如果最终结果为1,说明只包含2、3、5因子 2. 主程序逻辑: - 读取整数n - 遍历1到n的所有数字 - 使用`isUgly`函数判断是否为丑数 - 按格式输出丑数(每行10个,每个占6字符宽度) - 统计并输出丑数个数 运行示例: 输入:100 输出: ``` 1 2 3 4 5 6 8 9 10 12 15 16 18 20 24 25 27 30 32 36 40 45 48 50 54 60 64 72 75 80 81 90 96 100 34 ``` [2026-01-12 17:51:47 | AI问答 | 486点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多