求最大公倍数(GCD)与最小公约数(LCM),构造两函数gcd与lcm先求出两数的最大公约数,再用两数和最大公约数求出最小公倍数。
最大公约数求法:用两数中较大的数除以较小数取余,当余数不为零时,用较小数替换较大数,再用余数替换较小数,直到取余为零,输出较小数即为最大公约数
如果不知道这种求最大公约数的方法的话,很容易会想到这种方法:
取两数中的较小数,从1开始到这个最小数 做成一个循环语句,当较大数和较小数都能被循环变量整除时,把该数赋值给最大公约数,这样在循环结束后,就求得了最大公约数。
但这种方法效率极低,如果两个数比较大,耗时就会特别长,所以还是要掌握第一种方法。
最小公倍数求法:两数相乘再除以最大公约数即为他们的最小公倍数
源代码如下:
#include<stdio.h>
int max(int x,int y){
if(x>y)
return x;
return y;
}
int gcd(int x,int y){ //求最大公约数
int a,temp;
if(max(x,y)!=x){
temp=y;
y=x;
x=temp;
}
while((temp=x%y)!=0){
x=y;
y=temp;
}
return y;
}
int lcm(int x,int y,int a){
int b;
b=x*y/a;
return b;
}
int main(){
int x,y;
int a,b;
scanf(