三種方法求兩個數的最小公倍數

方法一:迭代法
代碼:
#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();   
}

說明:這些代碼都是自己寫的,難免會不足,多多指教。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章