数论常用的基本概念

版权声明:如果转载,请注明出处。 https://blog.csdn.net/S_999999/article/details/89288687

1.欧几里得算法

   gcd(a,b) = gcd( b , a%b );     

2.扩展欧几里得算法

           已知a, b求解一组x,y,使它们满足等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。

           x、y的解集为:

           x = x1 + b / gcd(a,b) * t

           y = y1 - a / gcd(a,b) * t;

           (t 为任意值)

          

反证:

将x、y代入原式ax + by = gcd(a,b)中得:

a(x1 + b / gcd(a, b) * t) + b(y1 - a / gcd(a,b) * t) = gcd(a,b)

化简后得:

ax1 + by1 = gcd(a,b)

所以可得解集正确

3. 线性同余方程:

对于方程:ax≡b(mod m),a、b、m都是整数,求解x的值。

     ax≡b(mod m)表示:(ax - b) mod m = 0,即同余。

     ax≡b (mod n) 等价于 ax = ny +b  ,也就是 求解 ax + ny = b   。

     利用扩展欧几里得求出:x0,y0.

     t = n/gcd(a,n) 

     x的 最小正整数解x1 为 : x1 = (x0 % t + t) % t,

     对应的 y1 = (c - a*x1) / b.

     t= a/gcd(a,n)

     y的 最小正整数解 y2 为 : y2 = ( y % t + t) % t,

     对应的 x2 = (c - n*y2 )/ a.

4.不定方程。

   ax+by = c.

   利用扩展欧几里得求解。

5.乘法逆元: 

   若有 a*x ≡ 1 (mod m),则称 x 为a关于m的乘法逆元,等价式 a * x+m * y = 1 

   对于两个数a,p若gcd(a,p)=1,则一定存在另一个数b,使得ab≡1(mod p),并称此时的b为a关于 1 模p的乘法逆元。

    我们记此时的b为inv(a)或a^-1。
 

 (a/b)%k = (a/b)*(1)%k = (a/b)*( b*x  )%k=a*x%b ,x是b的逆元

   所以 (a/b)%k =  a*inv(b) %k. 

ps: 求解 ( a/b )%m    时  一般想法是  转化为(a%(b*m))/b,转化过程如下

令k = (a/b)/m(向下取整), x = (a/b)%m;

a/b = k*m + x (x < m);

a = k*b*m + b*x;

a%(b*m) = b*x;

a%(b*m)/b = x;

得证: a/b%m = a%(b*m)/b;(公式适用于很多情况:m不必是素数,b和m也不必互质)


6.费马小定理:

  对于质数p,任意整数a,均满足:a^p ≡ a(mod p);

   

费马小定理求逆元: p为质数,a,p互质 . a*a^(p-1) ≡ 1(mod p); 

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/89288687
今日推荐