数学(1.费马定理 2.扩展欧几里德算法 3.莫比乌斯反演)

费马小定理(Fermat Theory)数论中的一个重要定理,其内容为: 假如p是质数,且Gcd(a,p)=1,那么 a(p-1) ≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。

扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。

欧几里德算法的扩展
扩展欧几里德算法不但能计算(a,b)的最大公约数,而且能计算a模b及b模a的乘法逆元,用C语言描述如下:
 1 int gcd(int a,int b,int &ar,int &br)
 2 {
 3     int x1,x2,x3;
 4     int y1,y2,y3;
 5     int t1,t2,t3;
 6     if(0==a)//有一个数为0,就不存在乘法逆元
 7     {
 8         ar=0;br=0;
 9         return b;
10     }
11     if(0==b)
12     {
13         ar=0;br=0;
14         return a;
15     }
16     x1=1;x2=0;x3=a;
17     y1=0;y2=1;y3=b;
18     int nk;
19     for(t3=x3%y3;t3!=0;t3=x3%y3)
20     {
21         k=x3/y3;
22         t2=x2-k*y2;t1=x1-k*y1;
23         x1=y1;x2=y2;x3=y3;
24         y1=t1;y2=t2;y3=t3;
25     }
26     if(y3==1)//有乘法逆元
27     {
28         ar=y2;
29         br=x1;
30         return 1;
31     }
32     else//公约数不为1,无乘法逆元
33     {
34         ar=0;
35         br=0;
36         return y3;
37     }
38 }

000

原文地址:https://www.cnblogs.com/henserlinda/p/4729217.html