辗转相除法求最大公约数和最小公倍数分析

Posted yu-ocean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了辗转相除法求最大公约数和最小公倍数分析相关的知识,希望对你有一定的参考价值。

求最大公约数和最小公倍数

程序分析:
(1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
(2)求最大公约数用辗转相除法(又名欧几里德算法)

辗转相除法:
技术图片

#include<stdio.h>

int main()
{
    int a,b,c;
    int raw_a,raw_b;
    scanf("%d %d",&a,&b);
    raw_a=a;raw_b=b;
    c=a%b;
    while (c!=0)
    {
        a=b;b=c;
        c=a%b;
    }
    printf("a与b的最大公约数是:%d
",b);
    printf("a与b的最小公倍数是:%d
",raw_a*raw_b/b);
    return 0;
}
12 56
a与b的最大公约数是:4
a与b的最小公倍数是:168

具体步骤:

#include<stdio.h>

int main()
{
    int a,b,c;
    int raw_a,raw_b;
    scanf("%d %d",&a,&b);
    raw_a=a;raw_b=b;
    c=a%b;
    printf("%d = %d * %d + %d
",a,a/b,b,a%b);
    while (c!=0)
    {
        a=b;b=c;
        c=a%b;
        printf("%d = %d * %d + %d
",a,a/b,b,a%b);
    }
    printf("
");
    printf("a与b的最大公约数是:%d
",b);
    printf("a与b的最小公倍数是:%d
",raw_a*raw_b/b);
    return 0;
}
789 456
789 = 1 * 456 + 333
456 = 1 * 333 + 123
333 = 2 * 123 + 87
123 = 1 * 87 + 36
87 = 2 * 36 + 15
36 = 2 * 15 + 6
15 = 2 * 6 + 3
6 = 2 * 3 + 0

a与b的最大公约数是:3
a与b的最小公倍数是:119928
1221 451
1221 = 2 * 451 + 319
451 = 1 * 319 + 132
319 = 2 * 132 + 55
132 = 2 * 55 + 22
55 = 2 * 22 + 11
22 = 2 * 11 + 0

a与b的最大公约数是:11
a与b的最小公倍数是:50061

以上是关于辗转相除法求最大公约数和最小公倍数分析的主要内容,如果未能解决你的问题,请参考以下文章

java例题_06 最大公约数&最小公倍数

c语言辗转相除法求最大公约数和最小公倍数

编写两个函数,分别求最大公约数和最小公倍数python

使用c++求最大公约数与最小公倍数

求两个数的最大公约数和最小公倍数

辗转相除法求整数的最大公约数和最小公倍数