问题标题: 酷町堂:求最大公约数和最小公倍数 欲哭无泪!

0
0

0
已采纳
朱宇辰
朱宇辰
初级守护
初级守护

 if(num1 < num2)//交换
    {
        num1^=num2;
        num2^=num1;
        num1^=num2;
    }
    x = num1;
    y = num2;//让num1,num2值不变
    while(y != 0)
    {
        temp = x%y;
        x = y;
        //cout<<"x="<<x<<endl;
        y = temp;
        //cout<<"x="<<y<<endl;
    }

当然,还有递归版本,可以追问

朱宇辰在2018-02-04 15:26:43追加了内容
int gcd(int a,int b){
	if((a%b)==0) return b;
	else return gcd(b,a%b)
}

也可以递归。

0
樊澄宇
樊澄宇
新手光能
新手光能

最大公约数可以用辗转相除法:

int gcd(int a,int b)
{
    if (a%b==0) return b;
    return gcd(b,a%b);
}

最小公倍数只需要将其中一个数除以最大公约数,再乘另一个数:

a/gcd(a,b)*b

 

0
刘睿轩
刘睿轩
中级光能
中级光能

 

int m, n, r;

 

int s;

 

scanf("%d %d", &m, &n);

 

s = m * n;

 

while(n != 0) {

 

r = m % n;

 

m = n;

 

n = r;

 

}

 

printf("%d ", s/m);

 

printf("%d", m);

0
我要回答