C语言----最大公约数和最小公倍数的求法

简介: C语言----最大公约数和最小公倍数的求法
#include <stdio.h>
//欧几里得算法求的最大公约数
int gcd(int a, int b)
{
    //一定要确保a>b
    if (a < b)
    {
        int temp = a;
        a = b;
        b = temp;//作用是创建临时变量将a和b的数值置换
    }
    while (b != 0)//当b不等于0时,继续执行循环
    {
        int remainder = a % b;//计算余数
        //算完余数后,进行新的计算,届时a位置上面的值由b替代
        //也就是第二次计算时,b坐在第一次a的位置,
        // 第一次的余数坐在第一次计算时b的位置
        a = b;
        b = remainder;//此时b的位置是余数
    }
    //注意这个循环的条件b != 0
    //当下一次计算的时候,上一次计算时
    //算出的余数不为0,那么就在下一次计算的时候坐在b的位置
    //但要是上一次计算的余数为0,也就是下次计算的b=0,
    // 那么循环就停止了,
    //恰好上一次循环的b现在在a的位置,所以现在a位置上面的值就是
    //我们要求的最大公约数
    return a;
}
 
//根据最大公约数求得最小公倍数
//最小公倍数就是你输入的两个值相乘再除以最大公约数
int lcm(int a, int b, int gcdValue)
{
    return a * b / gcdValue;
}
//这种题最关键的就是求出最大公约数
// 再根据最大公约数求出最小公倍数
 
 
int main()
{
    int m, n;
    scanf("%d %d", &m, &n);
    //计算最大公约数
    int gcdValue = gcd(m, n);
    //计算最小公倍数
    int lcmValue = lcm(m, n, gcdValue);
    //打印最大公约数和最小公倍数之和
    printf("%d", gcdValue + lcmValue);
 
 
    return 0;
}
 
 
如果给的数据特别大,就在每个int前面添加long long
并且在占位符%d前面添加ll
相关文章
|
2月前
|
人工智能 BI C语言
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
25 1
|
2月前
|
C语言
C语言之完数、素数、回文数合集
C语言之完数、素数、回文数合集
|
2月前
|
C语言
【01】判断素数/质数(C语言)
【01】判断素数/质数(C语言)
|
8天前
|
C语言 Windows
C语言素数的不同求法
C|素数的不同求法及在线测试比较
|
2月前
|
算法 C语言
C语言中的最大公约数和最小公倍数,居然如此简单!
C语言中的最大公约数和最小公倍数,居然如此简单!
|
10天前
|
C语言
C语言---最大公约数和最小公倍数的求法
C语言---最大公约数和最小公倍数的求法
10 0
|
2月前
|
C语言
最大公约数和最小公倍数(c语言)
最大公约数和最小公倍数(c语言)
|
2月前
|
算法 C语言
C语言求最大公约数和最小公倍数
C语言求最大公约数和最小公倍数
24 0
|
2月前
|
人工智能 BI C语言
c语言编程练习题:7-26 最大公约数和最小公倍数
c语言编程练习题:7-26 最大公约数和最小公倍数
26 0
|
11月前
|
C语言
C语言练习---【求素数】(一篇带你掌握素数求解)
C语言练习---【求素数】(一篇带你掌握素数求解)
98 0
C语言练习---【求素数】(一篇带你掌握素数求解)