- Mp = 2^p-1 且 p是素数,称为梅森数,若Mp是素数则称为梅森素数。
- Lucas-Lehmer判定法 判定一个数是否为梅森素数 效率足够高,如果题目特意为梅森素数设计,会卡复杂度,那么套用此方法即可。算法复杂度为O(p^3)。
- 思路:R.1 = 4;R.k = (R.k-1 ^ 2 - 2) % Mp;
如果R.p-1 == 0,则是梅森素数,否则不是。
2特殊判断,是梅森素数。 - 为了乘法溢出可以采用换加法来处理。
- 梅森素数表:因为个数不多所以常常可以打表
- 相关拓展:完美数,华林问题,蔡天新的课程
//模拟二进制乘法,及时取余防止溢出,同样的思路可以利用10进制,但是二进制更不容易溢出,且位运算较快,灵活运用。
long long multi(long long a, long long b, long long m){
long long ans = 0;
while(b >