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

#include <stdio.h> int main() { int num,i=1,sum=0; scanf("%d",&num); printf("NO"); while(i<=num){ if(num%i==0) sum++; i++; } if(sum>2 && num == 1) printf("NO"); else printf("YES"); return 0; }
这段代码试图判断一个整数是否为质数,但逻辑上有问题。程序先无条件输出"NO",然后计算因数个数,最后根据条件输出"YES"或"NO",导致输出结果混乱。

- 程序一开始就执行 `printf("NO");`,这会在任何判断之前先输出一次"NO",导致最终输出总是包含多余的"NO"。
- 判断质数的条件有误:质数应恰好有2个因数(1和自身),但代码中 `if(sum>2 && num == 1)` 的逻辑不正确。当 `num` 为1时,因数个数为1,但代码却检查 `sum>2`,这永远不会成立,导致1被错误地判断为质数。