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

#include <stdio.h> int main() {int n,a=2; scanf("%d",&n); if (n==2){ printf("YES"); }return 0; if (n==1||n==0){ printf("NO"); }return 0; while (a<n){ if (n%a==0){ printf("NO"); return 0; } a++;} {printf("YES");} return 0; }
这段代码试图判断一个整数是否为质数,但存在逻辑错误。程序在输入数字后,会先检查n是否等于2,然后立即返回,导致后续的质数判断代码永远不会执行。

- 代码中出现了多个`return 0;`语句,它们会提前结束整个程序。例如,在`if (n==2)`之后直接`return 0;`,这样无论n是否为2,程序都会结束,不会执行后面的循环判断。
- 质数判断的逻辑顺序需要调整。应该先处理n等于0或1的情况(输出NO),然后处理n等于2的情况(输出YES),最后再对大于2的数进行循环判断。注意循环结束后要输出YES,但当前代码中循环外的`printf("YES");`可能因为前面的`return`而无法执行。