public void Solve() { // for now, naively just store values. var exclude = new HashSet <long>(); long maxCD = 0; long i = 0; var e = EValue(0); while (e > (double)C / 2) { if (primes.HaveCommonFactor(C, e, ref maxCD)) { exclude.Add(e); } i += 1; e = EValue(i); } i = 0; e = EValue(0); int count = 0; while (e > (double)C / 2) { if (!exclude.Contains(e)) { count += 1; } i += 1; e = EValue(i); } Console.WriteLine($"Count: {2 * count}"); }