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

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

- 代码对x=1和x=2做了特殊处理,但x=1不是质数,这里输出YES是不正确的。质数定义为大于1且只能被1和自身整除的数。
- 循环从x-1开始检查,效率较低。实际上只需要检查到x的平方根即可,但这不是主要问题。注意当x=2时,循环不会执行,直接输出YES,这是正确的。但x=1的情况需要重新考虑。