在线编译器 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; int n, i, flag = 1; scanf("%d", &n); if (n <= 1) flag = 0; else { // 2n for (i = 2; i * i <= n; i++) { if (n % i == 0) { flag = 0; break; } } } if (flag == 1) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数是否为素数(质数),但存在重复代码的问题。代码中出现了两次几乎完全相同的判断逻辑,而且第二次的 `return 0;` 之后还有代码,导致第二次的 `int n, i, flag = 1;` 等语句永远不会执行。

- 代码中重复写了两遍相同的判断逻辑,这是不必要的。第一次 `return 0;` 之后的所有代码都不会被执行,所以第二次的输入和判断是无效的。
- 注意 `return 0;` 的位置:它应该放在程序最后,而不是中间。当前第一个 `return 0;` 提前结束了程序,导致后面的代码成为死代码。