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

#include <stdio.h> int main() {int n,a=1; scanf("%d",&n); while (a<n){ if (n%a==0){ printf("NO"); return 0; } a++; else {printf("NO");}} return 0; }
这段代码试图判断一个数是否为质数,但逻辑有误。它从a=1开始检查n是否能被a整除,但1能整除任何整数,所以程序会立即输出"NO"并结束。此外,循环中的else分支位置也不正确。

- 检查除数应从2开始,而不是1。因为任何数都能被1整除,这会导致错误判断。
- 循环中的else分支位置不对,它不应该在a++之后。你需要重新考虑循环结构:只有当所有可能的除数都检查完且没有找到因数时,才输出"YES"。