Онлайн компилятор C

#include <stdio.h> void print_simple(int n) { int i; for (i = 2; n % i == 0 && i * i <= n; i++) { printf("%d ", i); n = n / i; } } int main() { print_simple(5); return 0; }
这段代码定义了一个函数 `print_simple`,目的是打印整数 `n` 的质因数。但当前实现有逻辑错误,导致它无法正确找出所有质因数。

- 循环条件 `n % i == 0 && i * i <= n` 会在 `i` 不能整除 `n` 时立即停止,而实际上应该继续尝试更大的 `i` 来分解剩余的 `n`。
- 循环结束后,如果 `n` 大于 1,说明还有一个大于平方根的质因数没有被打印。

- 提示1:循环条件中的 `n % i == 0` 导致一旦 `i` 不是因数,循环就终止了。想一想,应该把判断整除的部分放在循环内部,而不是条件里。
- 提示2:当循环结束后,检查 `n` 是否大于 1,如果是,它本身就是一个质因数,需要打印出来。