Online Compiler C

#include <stdio.h> void print_simple(int n){ int first=1; for (int i=2;i*i<=n;i++){ while(n%i==0){ if(!first){ printf(" "); } printf("%d",i); first=0; n/=i; } } if (n>1){ if(!first){ printf(" ") } printf("%d",n); } }
这段代码的功能是输出一个整数的质因数分解结果,每个质因数用空格分隔。它通过循环从2开始检查,当找到一个因数时,不断除以该因数直到无法整除,然后继续检查下一个数。

代码中存在一个语法错误,导致无法编译通过。

- 在 `if(!first){ printf(" ") }` 这一行,`printf(" ")` 后面缺少了分号,导致语法错误。C语言中每条语句必须以分号结束。
- 另外,逻辑上需要注意:当输入为1时,循环条件 `i*i<=n` 不会执行,但最后的 `if (n>1)` 判断会跳过,因此不会输出任何内容。这是否符合预期需要根据题目要求判断。