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

基本原理

1、先求最大公约数
先求出原式的余数,将原式的除数作为下个式子的被除数,将原式的余数作为下个式子的除数,继续取模,依次下去,直至最后的除数变为0,最后被除数的值就是最大公约数。
2、求最小公倍数
求法:给出的两个数的积除以最大公约数即为最小公倍数。

代码实现如下
include<stdio.h>
int main(){

int a,b;
int t;
int m,n;

scanf("%d %d",&a,&b);
m=a;
n=b;

/*
a=12, b=18
a   b    t
12  18   12
18  12   6
12  6    0
6   0      
*/
while(b!=0){
    t=a%b;
    a=b;
    b=t;
}
printf("最大公约数为%d",a);
printf("最小公倍数为%d",m*n/a);
return 0;
}

你可能感兴趣的:(C语言题集,c语言)