在线编译器 C

#include <stdio.h> int main() {int n,a=2; scanf("%d",&n); while (a<n){ if (n%a==0){ printf("NO"); return 0; } a++; else {printf("NO");}} return 0; }
这段代码试图判断一个数是否为质数,但逻辑有误。它从a=2开始检查n是否能被a整除,如果整除就输出"NO"并结束。但else分支会在每次循环中输出"NO",导致无论什么情况都会输出"NO"。

- 你的else分支放在while循环内部,并且与if配对,但else后面没有条件,这会导致每次循环中只要n%a不等于0,就会执行else输出"NO"。实际上,只有当循环结束都没有找到因数时,才应该输出"YES"。
- 另外,你的else语句位置不对,它不应该在a++之后,因为else必须紧跟在if之后。你需要重新考虑循环的结构:先检查是否能整除,如果不能,才增加a,而不是在a++之后放else。