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

如何用C语言计算输入数字的质数乘积并输出结果

解决质数乘积的问题

你只需要添加一个变量来存储质数的乘积,并在找到每个质数时更新这个乘积即可。这里推荐用long long类型,避免输入较大数字时乘积溢出。

修改后的代码如下:

#include <stdio.h>

int main()
{
    int number;
    int prime;
    int i, j;
    // 初始化乘积为1,乘法的单位元是1
    long long product = 1;

    printf("Insert number:");
    scanf("%d", &number);

    printf("Prime numbers of %d are: ", number);

    for(i = 2; i <= number; i++)
    {
        prime = 1;

        // 优化:j循环到sqrt(i)比i/2更高效,减少循环次数
        for(j = 2; j * j <= i; j++)
        {
            if(i % j == 0)
            {
                prime = 0;
                break; // 找到因子直接跳出循环,无需继续判断
            }
        }
        if(prime == 1)
        {
            printf(" %d", i);
            // 将当前质数乘到乘积中
            product *= i;
        }
    }

    // 打印最终的乘积结果
    printf("\nProduct of these primes: %lld", product);

    return 0;
}

关键改动说明:

  • 新增long long product = 1;:用长整型存储乘积,防止大数字溢出;初始值设为1,因为任何数乘1都不会改变其值。
  • 在质数判断为真的分支里添加product *= i;:每次找到质数就更新乘积。
  • 循环结束后新增打印语句,输出最终的乘积。
  • 额外优化了质数判断的内层循环:把j <= i/2改成j * j <= i,并添加break,减少不必要的循环次数,提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:18:32