摘要:欧几里得: 又叫辗转相除法,用于计算两个数a,b的最大公约数 有公式 gcd(a,b)= gcd(b,a%b) 证明: 不妨设a>b(不然递归一次不就一样了吗) a可以表示成a=k*b +r, r=a%b ①假设d是a,b 的一个公约数,即 d|a, d|b 而r=a-k*b,r/d = a/d –
阅读全文
摘要:(所有^为次方) 阶: 设a,m∈Z, m>1, (a,m) =1 则使 a^r = 1 (mod m) 成立的最小正整数r,成为a对模m的阶,记为ord m (a) 如:ord m (1)=1 , ord 2(-1)=1 , ord m(-1)=1 (m>2) , ord 17(3)=16 注意:
阅读全文
摘要:(所有^为次方) 欧拉定理: a^phi(m)=1 (mod m) ( gcd(a,m)=1 ) 设1到m中与m互质的数为 x1, x2, x3, ……x phi(m) 令pi=xi*a 引理一:p之间两两模m不同余,x之间两两模m不同于 x两两模m不同样因为都小于等于m,一眼看出 反证:若pi-p
阅读全文
摘要:欧拉函数定义:phi(n) = 1到n中与n互质的数的个数 有公式: phi(n) = n* ∏ ( 1 - 1/pi ) 其中p为n的所有质因子,每个质因子只算一次 下面是证明: 1. 当n为质数,显然phi(n) = n-1 2. 当n=p^k ,其中p为素数 与n不互质的数必定有p因子,把p提
阅读全文
摘要:单点求解sqrt(n) (可以自己改写,很简单) 筛法递推 解释一下线性筛 设a=x*x*y*y*z(x<y<z) a仅会被x筛到 因为x*x*y*z在筛到素数x时就已经break了,同理x*x*y*y不会筛到z 因此,每个数仅被他的最小质因子筛到,因此为O(n),这一性质也是可以利用的 解释一下莫
阅读全文
摘要:ax=n(%b) -> ax+by=n 方程有解当且仅当 gcd(a,b) | n ( n是gcd(a,b)的倍数 ) exgcd解得 a*x0+b*y0=gcd(a,b) 记k=n/gcd(a,b) 则方程ax+ny=b的所有解为 x=k*x0 + [ b/gcd(a,b) ]*t y=k*y0
阅读全文
摘要:费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p) 证明(copy的百度百科,加点自己的解释) 引理1. 若a,b,c为任意3个整数,m为正整数,且(m,c)=1,则当a·c≡b·c(mod m)时,有a≡b(mod m)。 证明:a·c≡b·c(mod m)可
阅读全文