19.求两个正整数的最大公约数和最小公倍数

时间:2021-05-09 00:35:09
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6    int m,n,r,t,p;
 7    scanf("%d,%d",&m,&n);
 8    if(m<n)  //把m置为最大数
 9    {
10        t = m;
11        m = n;
12        n = t;
13    }
14    p = m*n;
15    while(n!=0)
16    {
17        r = m%n;  //利用辗转相除法,思想:给定两个数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的数对,
18        m = n;    //继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数
19        n = r;
20    }
21     printf("最大公约数为: %d\n",m);
22     printf("最小公倍数为: %d",p/m);  //最小公倍数=m*n/最大公约数
23     return 0;
24 }