求两个整数模的逆元

    xiaoxiao2021-12-14  18

    #include<iostream.h> //using namespace std; int gmod(int a,int b); //这儿要加声明,大概是因为gomd在main函数后面,所以得在main函数前面声明一个吧 int main() { int x,y; cout<<"请输入两个整数:"<<endl; cin>>x>>y; int su=gmod(x,y); if(su==0) cout<<x<<"和"<<y<<"不互素!"<<endl; else cout<<x<<"和"<<y<<"模的逆元是:"<<su<<endl; return 0; } int gmod(int a,int b) //求两个整数模的逆元 { int s0=1,s1=0,t0=0,t1=1; //对s1,s0,t1,t0进行初始化 int bb=b; //保留b的初值 if(a==1) return 1; if(a%b==0) return 0; //若a,b不互素,直接返回0 int q,r,s,t; //声明辗转反除法需要用到的整数 while(b%a!=0) //直到a%b等于1才结束while { q=b/a; r=b%a; b=a; a=r; s=s0-q*s1; s0=s1; s1=s; t=t0-q*t1; t0=t1; t1=t; } if(t>0) return t; else return t+bb; }
    转载请注明原文地址: https://ju.6miu.com/read-970984.html

    最新回复(0)