C语言判断质数:代码纠错与优化
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;}
代码解释:
-
for循环: 循环从i = 2开始,到i < n结束。在每次循环中,判断n是否能被i整除。 * 如果n能被i整除 (n % i == 0),说明n不是质数,使用break语句跳出循环。 * 如果循环结束时i等于n,说明n没有被任何小于它的数整除,因此n是质数。 -
if-else语句: 根据循环结束后的i的值判断n是否为质数,并输出相应的结果。
代码优化:
- 循环条件优化: 可以将循环条件改为
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;}
原文地址: http://www.cveoy.top/t/topic/cuGA 著作权归作者所有。请勿转载和采集!