In [31]:
import math
puzzle = """
23	425	338	112	300	576	330	0	220	250	264	132	414	494	224
408	0	525	0	230	0	240	0	575	0	437	0	552	0	315
420	552	416	250	552	529	624	437	15	0	650	138	520	84	575
138	0	175	0	221	0	500	0	345	0	104	0	575	0	264
625	336	220	200	285	0	240	221	234	9	391	576	234	78	336
306	0	0	0	48	0	19	0	399	0	0	0	378	0	6
330	306	352	256	170	484	550	0	280	210	260	256	144	525	16
0	0	240	0	144	0	0	0	0	0	50	0	114	0	0
88	190	441	364	468	475	336	0	676	391	676	468	130	286	255
105	0	144	0	0	0	525	0	425	0	600	0	0	0	161
408	1	504	207	500	144	550	483	48	0	16	575	462	143	336
600	0	126	0	50	0	176	0	54	0	169	0	276	0	132
375	144	600	260	286	0	180	208	625	144	414	208	378	18	600
40	0	264	0	312	0	13	0	78	0	96	0	228	0	150
575	650	550	312	552	126	144	0	154	456	112	36	230	144	432
""".strip()
tables = [
  [],  # First.
  [],  # Second.
]


def factor(n):
  if not n: return []
  factors = []
  if n == 1:
    factors.append(1)
  elif n < 26:
    factors.extend([1, n])
  for f in range(2, min(int(math.sqrt(n)) + 1, 26 + 1)):
    if n % f == 0 and n // f <= 26:
      if f == n // f:  # Square number.
        factors.append(f)
      else:
        factors.extend([n // f, f])
  return list(sorted(factors))

factors = {}
for row in puzzle.split('\n'):
  output = []
  for n in row.split('\t'):
    i = int(n)
    f = factor(i)
    factors[i] = f
    if len(f) == 1:
      output.append(str(f[0]))
    else:
      output.append('')
  print('\t'.join(output))
    

for key, value in sorted(factors.items(), key=lambda x: x[0]):
  print('%s\t%s' % (key, '\t'.join(map(str, value))))

print(repr(factors).replace('], ', '],\n'))


					24									
														
					23									
														
25											24			
														
			16		22						16			
														
		21						26		26				
														
	1													
										13				
								25						
														
														
0	
1	1
6	1	2	3	6
9	1	3	9
13	1	13
15	1	3	5	15
16	1	2	4	8	16
18	1	2	3	6	9	18
19	1	19
23	1	23
36	2	3	4	6	9	12	18
40	2	4	5	8	10	20
48	2	3	4	6	8	12	16	24
50	2	5	10	25
54	3	6	9	18
78	3	6	13	26
84	4	6	7	12	14	21
88	4	8	11	22
96	4	6	8	12	16	24
104	4	8	13	26
105	5	7	15	21
112	7	8	14	16
114	6	19
126	6	7	9	14	18	21
130	5	10	13	26
132	6	11	12	22
138	6	23
143	11	13
144	6	8	9	12	16	18	24
150	6	10	15	25
154	7	11	14	22
161	7	23
169	13
170	10	17
175	7	25
176	8	11	16	22
180	9	10	12	15	18	20
190	10	19
200	8	10	20	25
207	9	23
208	8	13	16	26
210	10	14	15	21
220	10	11	20	22
221	13	17
224	14	16
228	12	19
230	10	23
234	9	13	18	26
240	10	12	15	16	20	24
250	10	25
255	15	17
256	16
260	10	13	20	26
264	11	12	22	24
276	12	23
280	14	20
285	15	19
286	11	13	22	26
300	12	15	20	25
306	17	18
312	12	13	24	26
315	15	21
330	15	22
336	14	16	21	24
338	13	26
345	15	23
352	16	22
364	14	26
375	15	25
378	18	21
391	17	23
399	19	21
408	17	24
414	18	23
416	16	26
420	20	21
425	17	25
432	18	24
437	19	23
441	21
456	19	24
462	21	22
468	18	26
475	19	25
483	21	23
484	22
494	19	26
500	20	25
504	21	24
520	20	26
525	21	25
529	23
550	22	25
552	23	24
575	23	25
576	24
600	24	25
624	24	26
625	25
650	25	26
676	26
{23: [1, 23],
425: [17, 25],
338: [13, 26],
112: [7, 8, 14, 16],
300: [12, 15, 20, 25],
576: [24],
330: [15, 22],
0: [],
220: [10, 11, 20, 22],
250: [10, 25],
264: [11, 12, 22, 24],
132: [6, 11, 12, 22],
414: [18, 23],
494: [19, 26],
224: [14, 16],
408: [17, 24],
525: [21, 25],
230: [10, 23],
240: [10, 12, 15, 16, 20, 24],
575: [23, 25],
437: [19, 23],
552: [23, 24],
315: [15, 21],
420: [20, 21],
416: [16, 26],
529: [23],
624: [24, 26],
15: [1, 3, 5, 15],
650: [25, 26],
138: [6, 23],
520: [20, 26],
84: [4, 6, 7, 12, 14, 21],
175: [7, 25],
221: [13, 17],
500: [20, 25],
345: [15, 23],
104: [4, 8, 13, 26],
625: [25],
336: [14, 16, 21, 24],
200: [8, 10, 20, 25],
285: [15, 19],
234: [9, 13, 18, 26],
9: [1, 3, 9],
391: [17, 23],
78: [3, 6, 13, 26],
306: [17, 18],
48: [2, 3, 4, 6, 8, 12, 16, 24],
19: [1, 19],
399: [19, 21],
378: [18, 21],
6: [1, 2, 3, 6],
352: [16, 22],
256: [16],
170: [10, 17],
484: [22],
550: [22, 25],
280: [14, 20],
210: [10, 14, 15, 21],
260: [10, 13, 20, 26],
144: [6, 8, 9, 12, 16, 18, 24],
16: [1, 2, 4, 8, 16],
50: [2, 5, 10, 25],
114: [6, 19],
88: [4, 8, 11, 22],
190: [10, 19],
441: [21],
364: [14, 26],
468: [18, 26],
475: [19, 25],
676: [26],
130: [5, 10, 13, 26],
286: [11, 13, 22, 26],
255: [15, 17],
105: [5, 7, 15, 21],
600: [24, 25],
161: [7, 23],
1: [1],
504: [21, 24],
207: [9, 23],
483: [21, 23],
462: [21, 22],
143: [11, 13],
126: [6, 7, 9, 14, 18, 21],
176: [8, 11, 16, 22],
54: [3, 6, 9, 18],
169: [13],
276: [12, 23],
375: [15, 25],
180: [9, 10, 12, 15, 18, 20],
208: [8, 13, 16, 26],
18: [1, 2, 3, 6, 9, 18],
40: [2, 4, 5, 8, 10, 20],
312: [12, 13, 24, 26],
13: [1, 13],
96: [4, 6, 8, 12, 16, 24],
228: [12, 19],
150: [6, 10, 15, 25],
154: [7, 11, 14, 22],
456: [19, 24],
36: [2, 3, 4, 6, 9, 12, 18],
432: [18, 24]}

In [ ]: