Online Compiler C

#include <stdio.h> void print_simple(int n){ int i=1,last=1; while(i<=n){ if(n%i!=0){ i++; } else n%(i*i); return i;} } int main() { int x,answer; while(scanf("%d",&x)){ answer=print_simple(x); printf("%d",answer); } return 0; }
这段代码试图将一个整数分解为质因数,但存在多个逻辑和语法错误。函数 `print_simple` 的返回值类型是 `void`,却试图返回 `i`;循环条件 `while(i<=n)` 会导致无限循环或错误结果;`else` 分支中的 `n%(i*i)` 没有实际作用;主函数中 `scanf` 的返回值判断也不正确。

- 函数 `print_simple` 声明为 `void` 无返回值,但内部使用了 `return i;`,这会导致编译错误。你需要明确函数应该返回什么,或者修改函数类型。
- 循环逻辑有问题:当 `n%i!=0` 时只增加 `i`,但 `else` 分支没有改变 `n` 或 `i` 的值,导致程序可能陷入死循环。思考如何用循环不断去除找到的质因子,并输出它们。