Online Compiler C

#include <stdio.h> void print_simple(int n) { int num = 2, result; while (n > 0) { result = n % num; if (result == 0) { printf("%d ", num); n = n / num; } else { num++; } } } int main() { int x; scanf("%d", &x); print_simple(x); return 0; }
这段代码试图将一个整数分解为质因数并打印出来。它的思路是从最小的质数2开始,不断尝试整除输入的数,如果能整除就输出这个质数,并继续用商进行分解。

代码存在一个逻辑问题:当n被除到1时,循环条件`while (n > 0)`仍然成立,但此时继续循环会导致num不断增大,最终输出多余的数字。

- 循环条件应该考虑n何时变为1,而不是大于0。当n等于1时,分解已经完成,应该停止循环。
- 另外,如果输入是1,程序会输出所有质数直到无穷,需要特殊处理这种情况。