From bfb3bcb1e361dd0a0e71e86dafacb8fe3172d073 Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Mon, 29 Dec 2025 22:44:14 +0100 Subject: [PATCH] Fixed issue with treating Mersenne's number as valid divisor for p. --- ...senneNumberDivisorByDivisorCpuTesterWithTemplate.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PerfectNumbers.Core/Cpu/MersenneNumberDivisorByDivisorCpuTesterWithTemplate.cs b/PerfectNumbers.Core/Cpu/MersenneNumberDivisorByDivisorCpuTesterWithTemplate.cs index 8679dc7..d5e2c54 100644 --- a/PerfectNumbers.Core/Cpu/MersenneNumberDivisorByDivisorCpuTesterWithTemplate.cs +++ b/PerfectNumbers.Core/Cpu/MersenneNumberDivisorByDivisorCpuTesterWithTemplate.cs @@ -2192,6 +2192,11 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN ulong limit64 = (ulong)limit; for (int x = 2; x < 64; x++) { + if ((ulong)x == prime) + { + continue; + } + ulong d = (1UL << x) - 1UL; if (d > limit64) { @@ -2216,6 +2221,11 @@ public struct MersenneNumberDivisorByDivisorCpuTesterWithTemplate() : IMersenneN break; } + if ((ulong)x == prime) + { + continue; + } + if (BigInteger.ModPow(2, prime, dBig) == BigInteger.One) { divisor = dBig;