转_求逆元的两种方法
摘要:先看费马小定理: 费马小定理是数论中的一个重要定理,其内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1逆元:设m为正整数,a为正整数,如果存在a' 使得:a X a' = 1(mod m)a'叫做a的逆元。密码学中用到了这个结论。RSA.证明:x^(MOD-1) = 1 (mod MOD)x*x^(MOD-2) = 1 (mod MOD) x^(MOD-2)为其逆元其中MOD 为素数 , x要小于MOD,如果x>=MOD,可以先对x取MOD,这不会影响结果。
阅读全文
posted @
2012-07-25 13:06
cchun
阅读(311)
推荐(0)
转载_模运算_归纳得很精华啊
摘要:很多地方用到模运算,这里说明模运算的一些规律,并加以证明。 后续会对这些理论实际的应用加以记录和说明。1. 模运算是取余运算(记做 % 或者 mod),具有周期性的特点。m%n的意思是n除m后的余数, 当m递增时m%n呈现周期性特点, 并且n越大,周期越长,周期等于n。例如0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 % 20 = 3, ..., 19 % 20= 1920 % 20 = 0,21 % 20 = 1,22 % 20 = 2,23 % 20 = 3, ...,39 % 20 = 192. 如果m %n = r,那么可以推出如下等式m = k * n +
阅读全文
posted @
2012-07-22 12:29
cchun
阅读(252)
推荐(0)
HDU2588_大区间_GCD_欧拉函数应用
摘要:/**Time: 0 ms*题目大意:* 输入m, n(n < 1000000000),求1~n之间中gcd(x, n) >=m 的x个数。*解题思路:* 找出N的所有大于等于M的因子(x1,x2,x3.....xi),然后设k=N/xi;* 下面只需找出小于k且与k互质的数。* 因为:设y与k互质且小于k,那么gcd(y*xi,k*xi)=xi;* (xi为N的因子,且xi大于等于M)。*/View Code 1 #include <iostream> 2 #include <algorithm> 3 #include ...
阅读全文
posted @
2012-07-19 02:03
cchun
阅读(877)
推荐(1)
HDU3501_calculation2_欧拉函数求和
摘要:/**Time: 0 ms*题目大意:* 求1~n里面比n小,但是与n不互素的数的总和。*解题思路:* 利用欧拉函数即可求解,1~n比n小且与n互素的数的总和为* sum(n) = n * phi(n) / 2;那么可以先求出1~n-1的总和,然后* 减去sum(n)即可。*/View Code 1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 5 int jisuan(int x) 6 { 7 int i,res=x; 8 for(i=...
阅读全文
posted @
2012-07-18 23:22
cchun
阅读(1283)
推荐(0)
HDU3589_Jacobi symbol_二次剩余
摘要:/**Time: 156 ms, 但是当我把求素因子拆出来的时候,居然600ms*题目大意:* 求二次剩余,求雅克比符号,然后根据性质把雅克比符号转换为勒让德符号。* 注意判断勒让德符号的结果,可以用欧拉准则,L(a, n),当 n|a时,结果为0,* 否则用a^((n - 1) / 2) mod n来求。(欧拉函数的适用范围是当n为奇素数)*解题思路:* 直接用欧拉准则来模拟即可。不需要管题目的一大堆性质,注意提取题目有用的信息。*题目困惑:* 当用J(a, n)中的n不是素数要装换为 J (a, n) = J (a, p...
阅读全文
posted @
2012-07-18 22:22
cchun
阅读(364)
推荐(0)