#include <iostream>
using namespace std;
int x(int a,int b){
int n;
if (a != 0 && b != 0) {
do {
n = a % b;
a = b;
b = n;
} while (n);
return a;
}
else
return -1;
return 0;
}
int M(int a, int b) {
int t;
if (x(a, b) == 0&&x(a,b)==-1)
{
cout << "无解" << endl;
return -1;
}
else
{
t = 1;
while ((a * t) % b != 1)
t++;
return t;
}
}
int main() {
int a, m;
cin >> a >> m;
int x = M(a, m);
cout << x;
}
2.
int mozhishu(int x, int y, int n) {
int a = 1;
if (y == 0)
return 1;
for (; y > 0; y /= 2)
{
a = (a * x) % n;
x = (x * x) % n;
}
return a;
}
int main() {
int x, y, m;
cin >> x >> y >> m;
x = mozhishu(x, y, m);
cout << x;
return 0;
}
3.设p = 23和a = 5,使用费尔马小定理计算a^{2020} mod p?
2020=22*91+18,又5^22mod23=1。则5^2020mod23=5^18mod23=6
4.使用欧拉定理计算2^{100000} mod 55
φ(55)=40,即2^40mod55=1.2^100000mod55=2^40*2500mod55=1
5.手动计算7^{1000}的最后两个数位等于什么?
7^1=7
7^2=49 7^3=343
7^4=2401
7^5=16807
7^6=117649
7^7=823543
7^8=5,764,801
可见,七的n次方的后两位数分别为07/49/43/01顺序循环
7^1000次方,1000/4为250,没有余数,因此7^1000次方后两位数为01