Revert "Merge pull request #38 from mlemanczyk/codex/fix-residue-method-iteration-issue"
This reverts commitafcc8d87f9, reversing changes made to5702e45169.
This commit is contained in:
1 parent
cc1967231c
commit
a9e4dc98c4
2 files changed
-83
No files matched your search
@@ -1,77 +0,0 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using EvenPerfectBitScanner;
|
||||
using PerfectNumbers.Core;
|
||||
using Xunit;
|
||||
|
||||
namespace EvenPerfectBitScanner.Tests;
|
||||
|
||||
public class ResidueCandidateEnumerationTests
|
||||
{
|
||||
[Fact]
|
||||
public void ModResidueTracker_does_not_flag_small_primes_as_composite()
|
||||
{
|
||||
var tracker = new ModResidueTracker(ResidueModel.Identity, initialNumber: 13UL, initialized: true);
|
||||
var primes = PrimesGenerator.SmallPrimes;
|
||||
var primesPow2 = PrimesGenerator.SmallPrimesPow2;
|
||||
|
||||
ulong p = 13UL;
|
||||
ulong remainder = p % 6UL;
|
||||
|
||||
for (int i = 0; i < 2000; i++)
|
||||
{
|
||||
tracker.BeginMerge(p);
|
||||
bool composite = false;
|
||||
for (int j = 0; j < primes.Length; j++)
|
||||
{
|
||||
if (primesPow2[j] > p)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
tracker.MergeOrAppend(p, primes[j], out bool divisible);
|
||||
if (divisible)
|
||||
{
|
||||
composite = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool isPrime = PrimeTester.IsPrimeInternal(p, CancellationToken.None);
|
||||
if (isPrime && composite)
|
||||
{
|
||||
throw new InvalidOperationException($"Prime {p} marked as composite.");
|
||||
}
|
||||
|
||||
p = Program.TransformPAdd(p, ref remainder);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TransformPAdd_visits_both_prime_residue_classes()
|
||||
{
|
||||
ulong p = 13UL;
|
||||
ulong remainder = p % 6UL;
|
||||
bool sawOneModSix = false;
|
||||
bool sawFiveModSix = false;
|
||||
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
ulong residue = p % 6UL;
|
||||
if (residue == 1UL)
|
||||
{
|
||||
sawOneModSix = true;
|
||||
}
|
||||
else if (residue == 5UL)
|
||||
{
|
||||
sawFiveModSix = true;
|
||||
}
|
||||
|
||||
p = Program.TransformPAdd(p, ref remainder);
|
||||
}
|
||||
|
||||
Assert.True(sawOneModSix, "Sequence never produced numbers congruent to 1 mod 6.");
|
||||
Assert.True(sawFiveModSix, "Sequence never produced numbers congruent to 5 mod 6.");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -554,12 +554,6 @@ internal static class Program
|
||||
}
|
||||
|
||||
bool useFilter = !string.IsNullOrEmpty(filterFile);
|
||||
if (useFilter && !useBitTransform)
|
||||
{
|
||||
// When replaying a filtered list of p values, iterate strictly along the prime sequence.
|
||||
// This keeps candidate generation aligned with the recorded primes regardless of residue stepping.
|
||||
_transformP = &TransformPAddPrimes;
|
||||
}
|
||||
HashSet<ulong> filter = [];
|
||||
ulong maxP = 0UL;
|
||||
if (useFilter)
|
||||
|
||||
Reference in new issue
Block a user