Merge pull request #35 from mlemanczyk/codex/debug-residue-iteration-in-evenperfectbitscanner

Prevent residue filter from skipping primes after reaching maxP
This commit is contained in:
Marek Lemańczyk authored and GitHub committed 2025-09-20 04:53:36 +02:00
commit bf1a498456
1 file changed
+17 -3
+17 -3
View File
@@ -643,9 +643,17 @@ internal static class Program
} }
else else
{ {
for (j = 0; j < count && !Volatile.Read(ref _limitReached); j++) bool reachedMax = false;
for (j = 0; j < count; j++)
{ {
p = buffer[j]; p = buffer[j];
if (Volatile.Read(ref _limitReached) && p > maxP)
{
break;
}
if (useFilter && !filter.Contains(p)) if (useFilter && !filter.Contains(p))
{ {
continue; continue;
@@ -653,12 +661,18 @@ internal static class Program
passedAllTests = IsEvenPerfectCandidate(p, divisorCyclesSearchLimit, out searchedMersenne, out detailedCheck); passedAllTests = IsEvenPerfectCandidate(p, divisorCyclesSearchLimit, out searchedMersenne, out detailedCheck);
PrintResult(p, searchedMersenne, detailedCheck, passedAllTests); PrintResult(p, searchedMersenne, detailedCheck, passedAllTests);
if (p == maxP) if (p == maxP)
{ {
Volatile.Write(ref _limitReached, true); reachedMax = true;
break;
} }
} }
if (reachedMax)
{
Volatile.Write(ref _limitReached, true);
break;
}
} }
} }
}); });