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

#include <math.h> #include <stdio.h> int main() { int n, m, flag = 1; scanf("%d",&n); if (n <= 1) flag = 0; for (m = 2; m <= sqrt(n); m++) { if (n % m == 0) { flag = 0; } } printf(flag?"Yes\n";"No\n") ; return 0; }
这段代码的功能是判断一个整数是否为素数(质数)。它读取用户输入的数字n,然后检查n是否能被2到sqrt(n)之间的任何整数整除。如果能被整除,则设置flag为0,表示不是素数;否则flag保持为1,表示是素数。最后根据flag的值输出"Yes"或"No"。

你的代码有一个语法错误,导致无法编译通过。

- 第13行的printf语句中,条件表达式使用了分号而不是冒号。在C语言的条件运算符中,应该用冒号分隔两个结果,而不是分号。检查这一行的标点符号。
- 另外,当n是负数或0时,sqrt(n)会出错,因为sqrt的参数不能为负数。不过对于素数判断,负数通常直接输出"No"即可,但你的代码中sqrt(n)可能会在n为负数时导致问题。