Online Compiler C

#include <stdio.h> int main() { int num,i=1,sum=0; scanf("%d",&num); while(i<=num){ if(num%i==0) sum++; i++; } if(sum>2 && num == 1) printf("NO"); else printf("YES"); return 0; }
这段代码试图判断一个整数是否为质数,但逻辑上有错误。程序通过循环统计输入数字的因数个数,然后根据因数个数判断是否为质数。

- 你的循环条件 `i<=num` 会导致 `num` 本身也被计入因数,而质数只有1和自身两个因数,所以应该用 `sum==2` 来判断质数,但你的条件 `sum>2 && num == 1` 是错误的。
- 当 `num` 等于1时,它只有1个因数,不是质数,但你的代码中 `num == 1` 的条件放在了错误的位置,导致输出结果不正确。