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

#include <stdio.h> int main() {int n,a=2; scanf("%d",&n); if (n==2){ printf("YES"); }return 0; while (a<n){ if (n%a==0){ printf("NO"); return 0; } a++;} {printf("YES");} return 0; }
这段代码试图判断一个整数是否为质数。它从2开始检查,如果n能被某个小于n的数整除,就输出NO并结束;否则循环结束后输出YES。但代码的逻辑顺序有问题,导致某些情况下的输出不正确。

- 代码在循环开始前就处理了n==2的情况,但紧接着就return 0了,导致后面的质数判断循环永远不会执行。对于n=2,输出YES是正确的,但对于其他质数(如3、5),程序会直接结束而不输出任何结果。
- 当n不是质数时,代码能正确输出NO并退出,但循环结束后输出YES的位置需要确保只有循环正常结束(即没有找到因数)时才执行。目前的结构中,如果n是质数且大于2,循环会正常结束,但前面的if语句已经让程序提前结束了,所以不会执行到最后的printf("YES")。