在线编译器 C

#include <stdio.h> int main() {int n,a=2; scanf("%d",&n); if (n==2){ printf("YES"); } if (n==1||n==0){ printf("NO"); } while (a<n){ if (n%a==0){ printf("NO"); return 0; } a++;} {printf("YES");} return 0; }
这段代码的功能是判断用户输入的一个整数是否为质数。如果是质数,输出"YES";如果不是,输出"NO"。代码逻辑基本正确,但存在一些细节问题。

- 当输入的数字是2时,代码会先输出"YES",然后因为while循环条件`a<n`不成立(a=2, n=2),循环不执行,最后又输出一个"YES",导致重复输出。你需要考虑如何避免这种重复输出。
- 当输入的数字是1或0时,代码输出"NO"后,程序会继续执行while循环(因为a=2,n=1或0时条件`a<n`不成立,循环不执行),然后最后又会输出一个"YES",导致错误输出。你需要确保程序在判断为"NO"后不再执行后续的输出。