From 155545384824c6a0182100a8f41562cd21473733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Lema=C5=84czyk?= Date: Sat, 20 Sep 2025 04:52:03 +0200 Subject: [PATCH] Prevent premature stop when filtering primes --- EvenPerfectBitScanner/Program.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/EvenPerfectBitScanner/Program.cs b/EvenPerfectBitScanner/Program.cs index 8896a26..ae7fc18 100644 --- a/EvenPerfectBitScanner/Program.cs +++ b/EvenPerfectBitScanner/Program.cs @@ -643,9 +643,17 @@ internal static class Program } else { - for (j = 0; j < count && !Volatile.Read(ref _limitReached); j++) + bool reachedMax = false; + + for (j = 0; j < count; j++) { p = buffer[j]; + + if (Volatile.Read(ref _limitReached) && p > maxP) + { + break; + } + if (useFilter && !filter.Contains(p)) { continue; @@ -653,12 +661,18 @@ internal static class Program passedAllTests = IsEvenPerfectCandidate(p, divisorCyclesSearchLimit, out searchedMersenne, out detailedCheck); PrintResult(p, searchedMersenne, detailedCheck, passedAllTests); + if (p == maxP) { - Volatile.Write(ref _limitReached, true); - break; + reachedMax = true; } } + + if (reachedMax) + { + Volatile.Write(ref _limitReached, true); + break; + } } } });