C语言判断质数:代码纠错与优化

你想要写一个验证是否为质数的 C 语言代码,但代码存在一些错误。以下是修正后的代码和详细解释:

**错误代码:**c#include <stdio.h>int main(){ int n, i; scanf('%d', &n); for (i = 2, i < n, i++); if (i % n == 0) break; else if(n > 2); printf('此数为质数 ');}

**修正后的代码:**c#include <stdio.h>

int main() { int n, i; scanf('%d', &n);

for (i = 2; i < n; i++) {        if (n % i == 0) {            break;        }    }

if (i == n) {        printf('此数为质数

'); } else { printf('此数不为质数 '); }

return 0;}

代码解释:

  1. for 循环: 循环从 i = 2 开始,到 i < n 结束。在每次循环中,判断 n 是否能被 i 整除。 * 如果 n 能被 i 整除 (n % i == 0),说明 n 不是质数,使用 break 语句跳出循环。 * 如果循环结束时 i 等于 n,说明 n 没有被任何小于它的数整除,因此 n 是质数。

  2. if-else 语句: 根据循环结束后的 i 的值判断 n 是否为质数,并输出相应的结果。

代码优化:

  1. 循环条件优化: 可以将循环条件改为 i * i <= n,因为如果 n 是合数,那么它一定有一个小于等于其平方根的因子。2. 特殊情况处理: 可以提前判断 n 是否小于 2,如果是,则直接输出 '此数不为质数',避免不必要的循环。

**优化后的代码:**c#include <stdio.h>

int main() { int n, i; scanf('%d', &n);

if (n < 2) {        printf('此数不为质数

'); } else { for (i = 2; i * i <= n; i++) { if (n % i == 0) { printf('此数不为质数 '); return 0; } } printf('此数为质数 '); }

return 0;}
C语言判断质数:代码纠错与优化

原文地址: http://www.cveoy.top/t/topic/cuGA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录