From 4c81f9e5a2e28eddd632831c1dc502eb48fce617 Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Thu, 16 Oct 2025 21:21:40 +0200 Subject: [PATCH] IsPrime cache reused --- PerfectNumbers.Core/PrimeOrderCalculator.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PerfectNumbers.Core/PrimeOrderCalculator.cs b/PerfectNumbers.Core/PrimeOrderCalculator.cs index fc4b039..68fe8a9 100644 --- a/PerfectNumbers.Core/PrimeOrderCalculator.cs +++ b/PerfectNumbers.Core/PrimeOrderCalculator.cs @@ -906,7 +906,12 @@ internal static partial class PrimeOrderCalculator for (int i = 0; i < pendingCount; i++) { ulong composite = pending[i]; - bool isPrime = Open.Numeric.Primes.Prime.Numbers.IsPrime(composite); + if (!primalityCache!.TryGetValue(composite, out bool isPrime)) + { + // Console.WriteLine($"Checking composite {composite}"); + isPrime = Open.Numeric.Primes.Prime.Numbers.IsPrime(composite); + _ = primalityCache.TryAdd(composite, isPrime); + } if (isPrime) { AddFactorToCollector(ref useDictionary, ref counts, primeSlots, exponentSlots, ref factorCount, composite, 1);