关于c++的问题,向高手请教-有悬赏分.....

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:06:38
要求:输入两个整数,求它们的最大公约数和最小公倍数

用辗转相除法求.
比如求x,y的最大公约数
x=ay+b
先讨论(x%y)的余数b是否等于0,如果是,则y为最大公约数.否则将y的值赋给x,把b的值赋给y然后在继续对b讨论.一直循环下去直到b=0时的y值就是所求的最大公约数了.在程序中验证部分可调用一个函数.如下面的yushu()函数.
这个程序你可以自己去运行一下,然后自己再理解一下吧.
#include<iostream.h>
#include<math.h>
int yushu(int x,int y)
{
int k;
if(x<y)
{
k=x;
x=y;
y=k;
}
if(x%y==0)
return abs(y);
else
return yushu(y,x%y);
}
void main()
{
int x,y,z,t;
cout<<"请输入x="<<endl;
cin>>x;
cout<<"请输入y="<<endl;
cin>>y;
z=yushu(x,y);
t=(x*y)/z;
cout<<x<<"与"<<y<<"的最小公倍数为:"<<t<<endl;
cout<<x<<"与"<<y<<"的最大公约数为:"<<z<<endl;
}