在线编译器 C

#include <stdio.h> void print_simple(int n){ int i=2; for(n%i==0;i*i<=n;i++){ printf("%d ",i); n=n/i; } } int main() { print_simple(5); return 0; }
这段代码试图打印一个整数的质因数分解,但存在逻辑错误。函数 `print_simple` 的循环条件写错了,导致它不会正确执行。

- 循环的初始化部分 `n%i==0` 不是一个赋值或初始化语句,而是一个条件表达式。在 `for` 循环中,初始化部分应该是一个表达式(通常是赋值),而不是条件判断。这会导致编译错误或未定义行为。
- 即使修正了循环结构,算法也没有正确处理当 `n` 不能被 `i` 整除时的情况。你需要考虑当 `n%i != 0` 时,应该增加 `i` 的值,而不是继续用同一个 `i` 尝试。