在线编译器 C

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

- 代码末尾有多余的三个右花括号,这会导致编译错误。检查一下花括号的配对,确保每个左花括号都有对应的右花括号,并且main函数结束后只有一个右花括号。
- 变量flag的初始值设为1表示假设是素数,但注意当n等于2时,循环条件i*i<=n(即4<=2)不成立,flag保持为1,这是正确的。不过你可以思考一下,如果n是负数或0,程序会输出什么?