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

如何在C语言的GCD、LCM代码中添加质因数分解及倍数序列打印

以下是针对需求给出的C语言代码实现方案:


一、添加质因数分解功能的GCD程序

原GCD程序通过遍历寻找最大公约数,现在新增质因数分解打印功能,我们可以封装一个质因数分解打印函数,在获取输入后调用它。

修改后的完整代码

#include <stdio.h>

// 打印单个数字的质因数分解
void printPrimeFactors(int num) {
    int original = num;
    printf("Num : %d = ", original);
    
    int firstFactor = 1;
    // 从最小质数2开始试除,寻找质因数
    for (int i = 2; i <= num; i++) {
        while (num % i == 0) {
            if (!firstFactor) {
                printf(" x ");
            }
            printf("%d", i);
            num /= i;
            firstFactor = 0;
        }
    }
    printf("\n");
}

int main()
{
    int n1, n2, i, gcd;

    printf("Enter two integers: ");
    scanf("%d %d", &n1, &n2);
    
    // 打印两个数的质因数分解
    printPrimeFactors(n1);
    printPrimeFactors(n2);

    // 原GCD计算逻辑
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }

    printf("G.C.D of %d and %d is %d\n", n1, n2, gcd);

    return 0;
}

关键说明

  • printPrimeFactors函数:从最小质数2开始试除目标数字,每次找到能整除的因数就打印,同时将数字除以该因数,重复直到数字变为1;
  • 通过firstFactor变量控制格式,避免开头或末尾出现多余的x符号;
  • 在获取输入后直接调用两次该函数,分别打印两个数的质因数分解。

二、添加倍数序列和公共倍数的LCM程序

原LCM程序通过递增寻找最小公倍数,现在新增两个数的倍数序列、公共倍数列表打印功能,我们可以封装倍数打印函数,并利用LCM的特性(公共倍数是LCM的倍数)来实现。

修改后的完整代码

#include <stdio.h>

// 打印数字的前count个倍数
void printMultiples(int num, int count) {
    printf("%d : ", num);
    for (int i = 1; i <= count; i++) {
        printf("%d", num * i);
        if (i != count) {
            printf(", ");
        }
    }
    printf("...\n");
}

int main() {
    int n1, n2, max, lcm;

    printf("Enter two integers: ");
    scanf("%d %d", &n1, &n2);

    // 原LCM计算逻辑
    max = (n1 > n2) ? n1 : n2;
    while (1) {
        if ((max % n1 == 0) && (max % n2 == 0)) {
            lcm = max;
            break;
        }
        ++max;
    }
    
    // 打印两个数的前4个倍数(可自行调整count值)
    printMultiples(n1, 4);
    printMultiples(n2, 4);
    
    // 打印前3个公共倍数(可自行调整count值)
    printf("Common Multiple = ");
    for (int i = 1; i <= 3; i++) {
        printf("%d", lcm * i);
        if (i != 3) {
            printf(", ");
        }
    }
    printf("...\n");

    printf("The LCM of %d and %d is %d.\n", n1, n2, lcm);
    return 0;
}

关键说明

  • printMultiples函数:接收数字和要打印的倍数数量,循环计算并打印每个倍数,通过判断控制逗号格式;
  • 公共倍数利用数学特性:两个数的所有公共倍数都是最小公倍数的倍数,因此直接用LCM乘以1、2、3...即可得到;
  • 代码中默认打印前4个单独倍数和前3个公共倍数,你可以根据需求修改count参数调整数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:05:33