From d99610098a6095b3c107d83f6ebd222f20bd6ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Lema=C5=84czyk?= Date: Mon, 20 Oct 2025 00:41:32 +0200 Subject: [PATCH] Store Pollard Rho primality on pending entries --- PerfectNumbers.Core/PrimeOrderCalculator.Cpu.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PerfectNumbers.Core/PrimeOrderCalculator.Cpu.cs b/PerfectNumbers.Core/PrimeOrderCalculator.Cpu.cs index 8fac79f..8f61221 100644 --- a/PerfectNumbers.Core/PrimeOrderCalculator.Cpu.cs +++ b/PerfectNumbers.Core/PrimeOrderCalculator.Cpu.cs @@ -36,7 +36,8 @@ internal static partial class PrimeOrderCalculator [MethodImpl(MethodImplOptions.AggressiveInlining)] public PendingEntry WithPrimality(bool isPrime) { - return new PendingEntry(Value, KnownComposite, true, isPrime); + bool knownComposite = KnownComposite || !isPrime; + return new PendingEntry(Value, knownComposite, true, isPrime); } } @@ -857,13 +858,13 @@ internal static partial class PrimeOrderCalculator if (currentTimestamp > deadlineTimestamp) { pollardRhoDeadlineReached = true; - pending.Add(new PendingEntry(composite, knownComposite: true)); + pending.Add(new PendingEntry(composite, knownComposite: false).WithPrimality(false)); continue; } if (!TryPollardRho(composite, deadlineTimestamp, out ulong factor)) { - pending.Add(new PendingEntry(composite, knownComposite: true)); + pending.Add(new PendingEntry(composite, knownComposite: false).WithPrimality(false)); continue; }