#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;
}
解同餘方程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.