# Python program for OEIS A052056
# Michael S. Branicky, Dec 31 2021

# A052056		Numbers k such that k! starts with its largest prime substring.
data = [2, 4, 6, 7, 9, 10, 15, 16, 20, 21, 23, 25, 30, 35, 43, 78, 102, 105, 132, 138, 151, 189, 202, 215, 219, 233, 241, 264, 320, 334, 349, 352, 367, 386, 433, 458, 520]

from sympy import isprime

def starts_with_lps(n):
    if isprime(n): return True
    s, pstartlen = str(n), 0
    for i in range(len(s)-1, 0, -1):
        intsi = int(s[:i])
        if isprime(intsi):
            pstart, pstartlen = intsi, i
            break
    if pstartlen == 0:
        return False
    for j in range(1, len(s)+1-pstartlen):
        for k in range(j+pstartlen, len(s)+1):
            sjk = s[j:k]
            intsjk = int(sjk)
            if intsjk <= pstart:
                continue
            if isprime(intsjk):
                return False
    return True

alst = []
k = 1
fk = 1
n = 0

while True:
    if starts_with_lps(fk):
        n += 1
        print("FOUND a(", n, ") =", k)
        alst.append(k)
        print("   ", alst)
        print("   ", data)
    k += 1
    fk *= k
    if k%100 == 0:
        print("...", k, alst[len(data):])