当前位置:首页 > C语言
最大公约数和最小公倍数算法
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2022-03-27 21:36:59  点击量:240  评论:0

    如果 a 能被 b 整除,a 就叫做 b 的倍数,b 就叫做 a 的约数。几个整数中公有的约数,就叫做这几个整数的公约数;其中,最大的一个公约数,叫做这几个整数的最大公约数。
    例如:24 和 16 的公约数有:1、2、4、8,其中,8 就是 24 和 16 的最大公约数。
    同理,几个整数中公有的倍数,就叫做这几个整数的公倍数;其中,最小的一个公倍数,叫做这几个整数的最小公倍数。
    例如:4 和 6 的公倍数有:12、24、……,其中,12 就是 4 和 6 的最小公倍数。
    现在,假设 a 是大数,b 是小数。a % b 取余,如果余数是 0,则,b 是最大公约数。如果余数不为 0,则把 b 的值给 a,余数给 b,再次进行 a % b 取余。直到余数为 0,即得出最大公约数。
    最小公倍数=两个数的积除以它们的最大公约数。
    C 语言实现代码如下:

#include <stdio.h>
int func(int m, int n){
    int t, a, b;
    // 1、将大数置前,小数置后
    if (m < n) {
        t = m;
        m = n;
        n = t;
    }
    a = m;
    b = n;
    // 2、求最大公约数
    while (b != 0) {
        t = a % b;
        a = b;
        b = t;
        printf("t = %d, a = %d, b = %d\n", t, a, b);
    }
    printf("最大公约数:%d\n", a);
    // 3、求最小公倍数
    return (m*n/a);
}

int main() {
    int x, y, z;
    printf("请输入两个整数:");
    scanf("%d%d", &x, &y);
    z = func(x, y);
    printf("最小公倍数:%d\n", z);
    return 0;
}

    运行结果如下:

请输入两个整数:24 16
t = 8, a = 16, b = 8
t = 0, a = 8, b = 0
最大公约数:8
最小公倍数:48
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting