在线编译器 C

#include <stdio.h> void print_simple(int n) { int i; for (i = 2; i * i <= n; i++) { while (n % i == 0) { printf("%d ", i); n = n / i; } } } int main() { print_simple(5); return 0; }
这段代码定义了一个函数 `print_simple`,它尝试打印整数 `n` 的所有质因数。主函数中调用它打印数字 5 的质因数。

代码的逻辑是:从 2 开始,检查每个数 `i` 是否能整除 `n`,如果能就反复打印并除以 `i`,直到 `i * i > n` 时停止。但这里有一个遗漏的情况:当循环结束后,如果 `n` 还大于 1,说明 `n` 本身是一个大于平方根的质因数,没有被打印出来。

- 检查循环结束后,`n` 的值是否可能大于 1。如果是,这个质因数也需要被输出。
- 注意函数 `print_simple` 的返回值类型是 `void`,但问题可能在于输出不完整,而不是函数本身的结构错误。