Online Compiler 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` 的数,如果有则输出 "NO",否则输出 "YES"。但代码在处理输入为 1 或 2 时逻辑不完整,并且对于 2 的判断有误。

- 当输入为 2 时,代码会直接输出 "YES",这是正确的,但循环从 `num = 1` 开始,条件 `num > 1` 不成立,所以不会进入循环,最终又输出一次 "YES",导致输出两个 "YES"。你需要考虑如何避免重复输出,尤其是当 `x` 为 2 时。
- 对于输入 1,代码输出 "YES",但 1 通常不被认为是质数。你需要检查质数的定义,并调整对 1 的处理。