一行代码解决最大公约数和最小公倍数

int m,n;//两个整数
int mmd; //最大公约数
int mmu;//最小公倍数
while((n%=m)&&(m%=n)); //一行代码指的是这一行最重要的一行
mmu=n+m;//最小公倍数,辗转相除后,m和n必有一个是0,不是零的那个就是最小公倍数
mmd=(n*m)/mmu;//最大公约数等于两个数相乘在除最小公倍数

下面是可以运行的代码:

#include <stdio.h>
int main() { 
    int m,n;
    int m1,n1,rem;
    int mmd,mmu;
    scanf ("%d%d", &m, &n); 
    m1=m;
    n1=n;
    if(n1)
        while((m1 %= n1) && (n1 %= m1));
    mmu = m1+n1;
    mmd = m*n/mmu;
    printf ("最大公约数:%d\n", mmu);
    printf ("最小公倍数:%d", mmd);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_46516242/article/details/106690691