在线编译器 C

#include <stdio.h> int main() { int x, num, digit; scanf("%d", &x); num = x-1; if(x==1 && x==2){ printf("YES"); } while(num >1 ){ digit = x%num; if(digit == 0){ printf("NO"); return 0; } num--; } printf("YES"); return 0; }
这段代码试图判断一个整数是否为质数。它从 `x-1` 开始向下检查是否有能整除 `x` 的数,如果没有则输出 "YES",否则输出 "NO"。

- 条件 `if(x==1 && x==2)` 永远不可能为真,因为一个数不能同时等于1和2。这里应该分别处理1和2的情况,但逻辑写错了。
- 当 `x` 等于2时,循环不会执行(因为 `num=1`,而循环条件是 `num>1`),所以会直接输出 "YES",这是正确的。但当 `x` 等于1时,同样会输出 "YES",而1不是质数,这是错误的。你需要单独处理 `x==1` 的情况。