c/c++实现模逆运算
最终结果:
实验原理:
代码实践:
#include <iostream>
using namespace std;
int main(int age, char * argv[]){
int temp, q, t1, t2, t3;
int a, b, swap=0;
int x1, x2, x3, y1, y2, y3;
int times = 0;
cout << "Please input two integers: ";
cin >> a >> b;
if(a<b){
swap = 1;
temp = a;
a = b;
b = temp;
}
x1 = 1, x2 = 0, x3 = a;
y1 = 0, y2 = 1, y3 = b;
while(y3!=0){
q = x3/y3;
t1 = x1 - q * y1;
t2 = x2 - q * y2;
t3 = x3 - q * y3;
x1 = y1;
x2 = y2;
x3 = y3;
y1 = t1;
y2 = t2;
y3 = t3;
times += 1;
//输出并观察每一次的迭代
cout << "第" << times << "次迭代:" << "t1:" << t1 << " t2:" << t2 << " t3:"<< t3 << endl;
}
if( x3 == 1){
if( swap == 1){
cout << "ninverse of: " << b << " mod " << a << " is: " << x2 <<endl;
cout << "ninverse of: " << a << " mod " << b << " is: " << x1 <<endl;
}
else{
cout << "ninverse of: " << a << " mod " << b << " is: " << x2 <<endl;
cout << "ninverse of: " << b << " mod " << a << " is: " << x1 <<endl;
}
}
else{
cout << "no inverse" << endl;
}
return 0;
}