1097.最小公倍数(辗转相除法)

来源:互联网 发布:国内有限元软件 编辑:程序博客网 时间:2024/06/05 09:21

1097.最小公倍数

最小公倍数:  两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。

最小公倍数=两数的乘积/最大公约(因)数。

求最大公约数:

辗转相除法:

   有两整数ab

         ① a%b得余数c

         ② c=0,则b即为两数的最大公约数

         ③ 若c≠0,则a=bb=c,再回去执行①

辗转相除法的证明:

有两整数ab,设a=k*b+r,  所以r=a mod b

设c为a,b的一个公约数

     则a mod c=0,b mod c=0,

     因为r=a-k*b, 所以 r mod c=0

所以 c是b,r的公约数

设d为a,b的最大公约数

     那么d必然是r的约数,

现在要证d是b,r的最大公约数

因为a=kb+r,那么b,r的公约数也是a的约数,

假设b, r的最大公约数=e

且d是b, r的公约数,则e mod d=0

且e是a, b的公约数,则d mod  e=0

所以d=e

d是b,r的最大公约数

例如

24/15余9

15/9余6

9/6余3

6/3=0,即3为最大公约数


求出最大公约数后,最小公倍数则不难求出


#include<cstdio>
int main(){
    int a,b,c,m,n;
    while(scanf("%d %d",&a,&b)!=EOF){
    m=a;
    n=b;
            c=m%n;                
    while(c!=0){
            m=n;
            n=c;
            c=m%n;
    }

        printf("%d",a*b/n);
        printf("\n");    
    }
    return 0;
}







阅读全文
1 0
原创粉丝点击