方法一:迭代法
代碼:
#include<iostream>
using namespace std;
int main()
{
int GCD(int m,int n);
int m,n,g;
cout<<"輸入兩個整數m和n(m>n)"<<endl;
cout<<"m:";
cin>>m;
cout<<"n:";
cin>>n;
g=GCD(m,n);
cout<<"m和n的最小公倍數是:";
cout<<g;
system("pause");
}
int GCD(int m,int n)
{
while(m%n!=0)
{
int t=m%n;
m=n;
n=t;
}
return n;
}
方法二:遞歸法
代碼:
#include<iostream>
using namespace std;
int main()
{
int GCD(int m,int n);
int m,n,g;
cout<<"輸入兩個整數m和n(m>n)"<<endl;
cout<<"m:";
cin>>m;
cout<<"n:";
cin>>n;
g=GCD(m,n);
cout<<"m和n的最小公倍數是:";
cout<<g;
system("pause");
}
int GCD(int m,int n)
{
if(m%n==0)
return n;
else
return GCD(n,m%n);
}
方法三:用棧實現
#include<iostream>
#include<stack>
using namespace std;
int main()
{
int GCD(int m,int n);
int m,n,g;
cout<<"輸入兩個整數m和n(m>n)"<<endl;
cout<<"m:";
cin>>m;
cout<<"n:";
cin>>n;
g=GCD(m,n);
cout<<"m和n的最小公倍數是:";
cout<<g;
system("pause");
}
int GCD(int m,int n)
{
stack<int> s;
s.push(n);
while(m%n!=0)
{
int t=m%n;
m=n;
n=t;
s.push(n);
}
return s.top();
}
說明:這些代碼都是自己寫的,難免會不足,多多指教。