解同餘方程

#include <iostream>

using namespace std;

int max_gongyue(int num1,int num2)
{
    int temp,m,n;
    if(num1<num2)
    {
        temp=num1;
        num1=num2;
        num2=temp;
    }

    m=num1;
    n=num2;
    while(m%n)
    {
        temp=m;
        m=n;
        n=temp-n*(temp/n);
    }
    return n;
}
int main()
{
    cout<<"解方程ax≡b(mod m)"<<endl;
    cout<<"請輸入 a,b,m"<<endl;
    int a,b,m;
    int d;
    int i;
    while(cin>>a>>b>>m)
    {
        //求(a,m)=d
        d=max_gongyue(a,m);
        //判斷方程是否有解
        if(b%d)
        {
            cout<<"該方程無解"<<endl;
        }
        else
        {
            cout<<"有"<<d<<"個解爲x≡ ";
            for(i=0;i<m;i++)
            {
                if(a*i%m==(b%m))
                {
                    cout<<i<<",";
                }
            }
            cout<<"\b";
            cout<<"(mod"<<m<<")"<<endl;
        }
    }

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章