输入两个数,求其最大公约数和最小公倍数,并输出所有的公约数
以下分别用三种方法求最大公约数,详细代码如下:
#include <iostream>
using namespace std;
//求最大公约数:求差法
void div1(int m,int n){
if ( m > n )
{
int temp=n;
n=m;
m=temp;
}
while(n-m!=0){
int temp = n-m;
if(temp>m){
n=temp;
}else{
n=m;
m=temp;
}
}
cout<<"最大公约数:(求差法 )"<<n<<endl;
}
//求最大公约数:转辗相除法
void div2(int m,int n){
if ( m > n )
{
int temp=n;
n=m;
m=temp;
}
while(n%m!=0){
int temp = n%m;
n=m;
m=temp;
}
cout<<"最大公约数:(转辗相除法 )"<<m<<endl;
}
//求最大公约数:递归法
void div3(int m,int n){
if (m<n)
div3(n,m);
else if(m==n){
cout<<"最大公约数:(递归法)"<<m<<endl;
}else
div3(n,m-n);
}
//求所有公约数
void div4(int m,int n){
if (m<n)
div4(n,m);
else{
cout<<"所有公约数:";
for(int i = 1;i<=n;i++){
if(m%i==0&&n%i==0)
cout<<i<<" ";
}
cout<<endl;
}
}
//求最小公倍数
void div5(int m,int n){
int sum=m*n;
if ( m > n )
{
int temp=n;
n=m;
m=temp;
}
while(n-m!=0){
int temp = n-m;
if(temp>m){
n=temp;
}else{
n=m;
m=temp;
}
}
cout<<"最小公倍数:"<<sum/m;
}
int main(){
int m,n;
cout<<"请输入两个数:";
cin>>m>>n;
div1(m,n);
div2(m,n);
div3(m,n);
div4(m,n);
div5(m,n);
}
测试结果: