From 1ec71f8cfd5e43e2e890ecb33edee7d662f1c283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Lema=C5=84czyk?= Date: Sat, 20 Sep 2025 19:48:36 +0200 Subject: [PATCH] Align GPU prime sieve with CPU GCD heuristic --- PerfectNumbers.Core/PrimeTester.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/PerfectNumbers.Core/PrimeTester.cs b/PerfectNumbers.Core/PrimeTester.cs index 5d83d5a..1d7c02a 100644 --- a/PerfectNumbers.Core/PrimeTester.cs +++ b/PerfectNumbers.Core/PrimeTester.cs @@ -255,12 +255,15 @@ public sealed class PrimeTester(bool useInternal = false) return; } - // Early reject special gcd heuristic with floor(log2 n) - ulong m = 63UL - (ulong)ILGPU.Algorithms.XMath.LeadingZeroCount(n); - if (BinaryGcdGpu(n, m) != 1UL) + if ((n % 10UL) == 1UL) { - results[index] = 0; - return; + // Early reject special GCD heuristic with floor(log2 n) + ulong m = 63UL - (ulong)ILGPU.Algorithms.XMath.LeadingZeroCount(n); + if (BinaryGcdGpu(n, m) != 1UL) + { + results[index] = 0; + return; + } } long len = smallPrimes.Length;