Fixed issue with treating Mersenne's number as valid divisor for p.

This commit is contained in:
mlemanczyk committed 2025-12-29 22:44:14 +01:00
1 parent be92ef1ae3
commit bfb3bcb1e3
1 file changed
+10
@@ -2192,6 +2192,11 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
ulong limit64 = (ulong)limit; ulong limit64 = (ulong)limit;
for (int x = 2; x < 64; x++) for (int x = 2; x < 64; x++)
{ {
if ((ulong)x == prime)
{
continue;
}
ulong d = (1UL << x) - 1UL; ulong d = (1UL << x) - 1UL;
if (d > limit64) if (d > limit64)
{ {
@@ -2216,6 +2221,11 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN
break; break;
} }
if ((ulong)x == prime)
{
continue;
}
if (BigInteger.ModPow(2, prime, dBig) == BigInteger.One) if (BigInteger.ModPow(2, prime, dBig) == BigInteger.One)
{ {
divisor = dBig; divisor = dBig;