Online Compiler C

#include <stdio.h> int main() { int num,i=1,sum=0; scanf("%d",&num); if(num==1) printf("NO"); else while(i<=num){ if(num%i==0) sum++; i++; } if(sum>2 ) printf("NO"); else printf("YES"); return 0; }
这段代码的功能是判断一个整数是否为质数。它通过统计输入数字的因数个数来决定输出"YES"或"NO"。

- 代码中有一个逻辑问题:当输入为1时,程序会先输出"NO",但之后还会继续执行后面的判断,导致可能输出两次结果。你需要考虑如何让程序在判断完1后不再执行后续代码。
- 另外,循环从i=1开始,到i<=num结束,这样会统计1和num本身作为因数。对于质数,因数个数应该是2,但你的判断条件是sum>2才输出"NO",这会导致像4这样的合数(因数有1,2,4共3个)被正确判断,但质数(因数只有1和自身共2个)会输出"YES"。这个逻辑是正确的,但需要确认循环是否包含了所有因数。