c++初级问题 自学 麻烦近来看看 谢谢!`

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:49:39
输入二个整数,求出这二个整数的最小公倍数。
//求二个数的最小公倍数用一个函数来实现。
#include<iostream.h>
int gbs(int a,int b)
{
int c=a*b;
if(a<b)
{
int t;
t=a;a=b;b=t;
}
int r;
while(r=a%b)
{
a=b;
b=r;
}
return c/b;
}
void main(void)
{
int x,y;
cout<<"Input x y"<<endl;
cin>>x>>y;
cout<<"The gbs is: "<<gbs(x,y)<<endl;
}

中间为什么用while啊?

while(r=a%b)
{
a=b;
b=r;
}
return c/b;这段看不懂?~解释下?~

我用软件尝试了 运行正确 严整了好几组数字也求的很正确 但是我想 当a =4,b =2的时候,r不就等于4%2为0了吗?这样c /b (b 值变换为r的值了)不就成为/0了吗? 晕了````

while(r=a%b)的意思是首先,赋值r=a%b,然后判断r是否为0,若是,则跳出循环,整个循环的目的是用欧几里德的辗转相除法来求出最大公约数。则最后 最小公倍数=a*b/最大公约数