为啥编译正确但是输出不了结果。这是求两数的最小公倍数。

img


输出不了结果,也不知道哪里有问题,请各位多多指教。……谢了。这方面不懂的还挺多的

你这里的判断条件 b 也没有变过啊, 一直死循环

img

因为while循环里,把第16行 a=c这个错了,改为b=c就可以了。

修改如下:

参考链接:

求最小公倍数的两种算法(最大公约数的三种算法)_最小公倍数算法_秃头的小蜗的博客-CSDN博客 最小公倍数的三种算法求两个数字的最小公倍数是很常见的运算。比如,3和5的最小公倍是15。6和8的最小公倍数是24。下面的算法为给定的两个正整数求它的最小公倍数。**1.辗转相除,相减又称公式法,两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即利用辗转相除法(欧几里得算法)或者辗转相减(更相减损术)先求出最大公约数再用两数之积除以最大公约数得出最小公倍数。首先先复习一下什么是辗转相除法和辗转相差法辗转相除:假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法(辗 https://blog.csdn.net/weixin_46569912/article/details/113195340


#include <stdio.h>

int main(void){
    
    int a=0;
    int b=0;
    int r=0;
    
    scanf("%d %d",&a,&b);
    int t=a*b;
    if(a<b){
        r=a;
        a=b;
        b=r;
    }
    // https://blog.csdn.net/weixin_46569912/article/details/113195340
    while(b!=0){
        int c=a%b;
        a=b;
        b=c; // 把a=c改为b=c就可以了。 
    }
    
    int m=t/a;
    printf("%d", m);
    
    return 0;
    
} 

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7579543
  • 你也可以参考下这篇文章:给定两个正整数,计算这两个数的最小公倍数。
  • 除此之外, 这篇博客: 电磁循迹小车赛后总结中的 3.在调参时,不要随机乱调参,要先搞清楚每个参数的作用,在一点一点逐渐调参。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    源码链接:

    ei-tracking-car

    博主也是第一次做车,第一次参赛,所以在代码编写和算法理解上还有些生疏,如果那里有错误,欢迎大家指正。

  • 您还可以看一下 周昊老师的小白学习课程:梯度下降算法与公式详细推导课程中的 从一个线性回归模型案例谈起小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    针对求两数最小公倍数的问题,需要先了解什么是最小公倍数以及如何计算最小公倍数。

    最小公倍数:是指两个或多个整数公有的倍数中,除0以外最小的一个。如6和8的倍数有:6、8、12、16、18、24、……其中6和8公共倍数最小为24,则6和8的最小公倍数为24。

    计算最小公倍数:有多种方法可以计算最小公倍数,其中较为通用的是使用两数的乘积除以它们的最大公约数。即:LCM(a,b) = a*b/GCD(a,b)

    以下是针对该问题的解决方案:

    Step 1: 定义函数,传入两个整数,函数返回它们的最大公约数(使用辗转相除法)。代码如下:

    int gcd(int a, int b)
    {
        int temp;
        while(b != 0)
        {
            temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }
    

    Step 2: 定义函数,传入两个整数,函数返回它们的最小公倍数(使用公式LCM(a,b) = a*b/GCD(a,b))。代码如下:

    int lcm(int a, int b)
    {
        return a*b/gcd(a,b);
    }
    

    Step 3: 在main函数中调用上述函数,针对用户输入的两个数进行操作并输出结果。代码如下:

    int main()
    {
        int num1, num2, result;
        printf("Enter two integers:\n");
        scanf("%d%d", &num1, &num2);
        result = lcm(num1, num2);
        printf("The LCM of %d and %d is %d\n", num1, num2, result);
        return 0;
    }
    

    完整代码如下:

    #include <stdio.h>
    
    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)
    {
        return a*b/gcd(a,b);
    }
    
    int main()
    {
        int num1, num2, result;
        printf("Enter two integers:\n");
        scanf("%d%d", &num1, &num2);
        result = lcm(num1, num2);
        printf("The LCM of %d and %d is %d\n", num1, num2, result);
        return 0;
    }
    

    以上就是针对求两数最小公倍数的解决方案。


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