老师好,不知道为什么我第一次教的网址404了,我重新交一下
#include <stdio.h>
//乘法逆元
int a,m,x;
int gcd(int a,int b);
int M(int a,int b);
int main()
{
scanf("%d%d",&a,&m);
x=M(a,m);
printf("%d",x);
return 0;
}
int M(int a,int b)
{
if(gcd(a,m)==0)
{
printf("无解\n");
return -1;
}
else
{
int y=0,z;
z=(y*m+1)%a;
while(z!=0) y++;
return y;
}
}
int gcd(int x,int y)
{
int t;
if(x!=0&&y!=0)
{
do
{
t=x%y;
x=y;
y=t;
}
while(t);
return x;
}
else
return -1;
return 0;
}
第三题:设p = 23和a = 3,使用费尔马小定理计算a^{2019} mod p?
3^2019 mod 23 = ?
a^(p-1)≡1(mod p)
所以3^2019 mod 23 ≡ 3^(91*(23-1)+17)
3^22≡1(mod 23)
3^21≡8(mod23)
…
3^17≡16(mod 23)
第四题:使用欧拉定理计算2^{100000} mod 55
ϕ(55) = 40
a^ϕ(n) ≡ 1 (mod n)
gcd(2,55)=1
所以2^{100000} mod 55=1