关于#c语言#的问题:如图 这个程序应该怎么写 完全没有头绪 请大家们指导一下

img


如图 这个程序应该怎么写 完全没有头绪 请大家们指导一下 题目描述:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数
调用这两个函数,并输出结果。两个整数由键盘输入。

先了解什么叫最大公约数和最小公倍数的原理,就知道怎么动手写代码了!

GPT3.5:

#include <stdio.h>

// 函数声明
int gcd(int a, int b);
int lcm(int a, int b);

int main() {
    int num1, num2;

    printf("请输入两个整数: ");
    scanf("%d %d", &num1, &num2);

    // 调用函数计算最大公约数和最小公倍数
    int greatestCommonDivisor = gcd(num1, num2);
    int leastCommonMultiple = lcm(num1, num2);

    printf("最大公约数: %d\n", greatestCommonDivisor);
    printf("最小公倍数: %d\n", leastCommonMultiple);

    return 0;
}

// 函数定义:计算最大公约数
int gcd(int a, int b) {
    int temp;

    while (b != 0) {
        temp = a % b;
        a = b;
        b = temp;
    }

    return a;
}

// 函数定义:计算最小公倍数
int lcm(int a, int b) {
    int gcdValue = gcd(a, b);
    int result = (a * b) / gcdValue;

    return result;
}


供参考:

#include<stdio.h>
//最大公约数
//******************Begin****************
long long int GCD(long long int  a,long long int  b)//辗转相除法
{
     long long int  t = 0;
     for (t = a % b; t != 0; a = b, b = t, t = a % b);
     return b;
}

//*****************End******************

//最小公倍数
//******************Begin****************
long long int  LCM(long long int  a,long long int  b)
{
    return a * b / GCD(a, b);
}
//*****************End******************

int main()
{

   //******************Begin****************
    long long int  a,b;
    scanf("%lld %lld", &a, &b);
    if(a > 0 && b > 0)
       printf("%lld %lld",GCD(a,b) ,LCM(a,b));
    else
       printf("Input Error");
   //*****************End******************
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7808362
  • 你也可以参考下这篇文章:c语言写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这个两个函数,并输出结果。两个整数由键盘输入。
  • 除此之外, 这篇博客: 写两个函数 分别求两个整数的最大公约数和最小公倍数 用主函数调用这两个函数 并输出结果 两个整数由键盘输入中的 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • 思路:先写一个主函数,通过主函数调用子函数来分别求出最大公倍数和最小公约数。
    • 代码如下:
    #include<stdio.h>
    int mgys;
    int mgbs;
    void maxgys(int a,int b);
    void maxgbs(int a,int b);
    int main()
    {
        int a,b;
        printf("输入两个整数:");
        scanf("%d%d",&a,&b);
        maxgys(a,b);
        maxgbs(a,b);
        printf("最大公约数=%d\n",mgys);
        printf("最小公倍数=%d\n",mgbs);
        return 0;
    }
    void maxgys(int a,int b){//求最大公约数
        int r,t;
        if(a<b){
            t=a;
            a=b;
            b=t;
        }
        while((r=a%b)!=0){
            a=b;
            b=r;
        }
        mgys=b;
    
    }
    void maxgbs(int a,int b){//求最小公倍数
        mgbs=a*b/mgys;
    }
    

    运行结果:
    在这里插入图片描述
    或者也可以这样:

    #include<stdio.h>
    int mgys;
    int mgbs;
    int maxgys(int a,int b);
    int maxgbs(int a,int b);
    int main()
    {
        int a,b;
        printf("请输入两个数:");
        scanf("%d%d",&a,&b);
        mgys=maxgys(a,b);
        mgbs=maxgbs(a,b);
        printf("最大公约数=%d\n",mgys);
        printf("最大公倍数=%d\n",mgbs);
        return 0;
    }
    int maxgys(int a,int b)
    {
        int t,r;
        if(a<b){
            t=a;
            a=b;
            b=t;
        }
        while((r=a%b)!=0){
            a=b;
            b=r;
        }
        return b;
    }
    int maxgbs(int a,int b)
    {
        mgbs=a*b/mgys;
        return mgbs;
        //或者: return (a*b/mgys)
    }
    

    运行结果:

    在这里插入图片描述

  • 您还可以看一下 吴刚老师的【吴刚大讲堂】电商品牌标识设计课程中的 电商品牌标识需要存在的基础条件小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    针对求最大公约数和最小公倍数的问题,可以分别编写两个函数来解决。使用辗转相除的算法求最大公约数,使用两个数的乘积除以最大公约数求最小公倍数。以下是示例代码:

    #include <stdio.h>
    
    // 求最大公约数
    int gcd(int a, int b) {
        if (b == 0) {
            return a;
        }
        return gcd(b, a % b);
    }
    
    // 求最小公倍数
    int lcm(int a, int b) {
        int g = gcd(a, b);  // 求最大公约数
        return a * b / g;   // 两数之积除以最大公约数等于最小公倍数
    }
    
    int main() {
        int a, b;
        printf("请输入两个整数:");
        scanf("%d %d", &a, &b);
        printf("最大公约数为:%d\n", gcd(a, b));
        printf("最小公倍数为:%d\n", lcm(a, b));
        return 0;
    }
    

    以上代码中,gcd函数使用了递归方式实现,每次调用将b替换为a%b,直到b为0。lcm函数中,首先用gcd函数求出两个数的最大公约数,然后用两数之积除以最大公约数计算最小公倍数。在主函数中,使用scanf从键盘输入两个整数,然后调用函数进行求解,并输出结果。

    希望这个示例代码能够对你有所帮助!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^