小知识(5)判断素数
判断一个大数是不是素数。
引入费马小定理:对于任意的a<n 如果a^(n-1)=1(mod n)成立,那么我们认为p是一个素数。
但是求一个2^n,当n很大的时候,就不行啦。
于是用幂模运算(快速幂取模):(a^b)%c = ((a%c)^b)%c
还看到了一种做法,挺好玩:
如果 a^(n-1)%n ==1 (0<a<n) 则它可能是合数可能是素数。随机取一个 a,如果它不满足 a^(n-1)%n ==1,则它一定是合数,退出,如果它满足 a^(n-1)%n ==1,则它是一个素数的概率是1/2,返回第一步。就是看概率,重复次数越多,是素数概率越大。
哎嘿,放题:
http://120.78.128.11/Problem.jsp?pid=2788
至于埃式筛欧拉筛就不说了。