You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C语言素数判断程序无输出返回值?如何修复?

素数判断程序无输出的原因及修复方案

问题原因

你的代码逻辑上能正确返回素数判断结果,但程序没有任何输出操作:main函数里仅仅调用了isPrime(n),却没有把函数返回的0或1打印到控制台。C语言不会自动输出函数返回值,必须显式调用输出函数才能让结果显示出来。

另外,原isPrime函数的循环效率可以优化——当前循环到n/2,实际上只需要循环到√n就足够了,因为若n存在大于√n的因数,必然对应一个小于√n的因数,这样能大幅减少循环次数。

修复后的代码

#include <stdio.h>
// 如果用sqrt函数需要包含这个头文件
#include <math.h>

int isPrime(int n) 
{
    if (n <= 1) { return 0; }
    // 优化循环条件到sqrt(n),减少迭代次数
    for (int i=2; i <= sqrt(n); i++) {
        if (n%i == 0) {
            return 0;
        }
    }
    return 1;
}

int main()
{
    int n = 2;
    int result = isPrime(n);
    // 显式输出判断结果
    printf("%d 是素数吗?%s\n", n, result ? "是" : "否");
    return 0;
}

额外说明

  • 如果不想引入math.h,可以把循环条件改成i*i <= n,避免调用sqrt函数,效果完全一致。
  • 你也可以修改main函数让程序接收用户输入的数字,让程序更实用:
    int main()
    {
        int n;
        printf("请输入一个整数:");
        scanf("%d", &n);
        int result = isPrime(n);
        printf("%d 是素数吗?%s\n", n, result ? "是" : "否");
        return 0;
    }
    

内容的提问来源于stack exchange,提问作者user19159910

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:25:38