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

#include <math.h> #include <stdio.h> int main() { int n, i, flag = 1; scanf("%d", &n); if (n <= 1) flag = 0; for (i = 2; i <= sqrt(n); i++) { if (n % i == 0) { flag = 0; break; } } printf(flag?"Yes\n":"NO\n"); return 0; }
这段代码的功能是判断一个整数是否为素数(质数)。它从用户输入一个整数n,然后检查n是否大于1且不能被2到sqrt(n)之间的任何整数整除。如果满足条件,输出"Yes",否则输出"NO"。

- 你的代码在输出时使用了"NO"(大写),而题目可能要求输出"No"(首字母大写)或"no"(全小写)。请检查题目对输出格式的具体要求,确保大小写完全一致。
- 当n是负数或0时,你的代码会正确设置flag=0,但循环条件`i <= sqrt(n)`中,sqrt(n)对于负数会返回NaN(非数字),可能导致循环行为异常。考虑在循环前增加对n<=1情况的处理,或者调整循环条件避免对负数开平方。