# 0JLQsNGB0LjQu9GM0ZTQstCwINCQ0YDRltC90LA= from pprint import pprint n = 8 matrix = [[0 for _ in range(n)] for _ in range(n)] def prime(num): if num < 2: return False for i in range(2, int(num ** 0.5) + 1): if num % i == 0: return False return True x, y = n // 2, n // 2 directions = [(0, 1), (-1, 0), (0, -1), (1, 0)] num = 1 step = 1 dir_index = 0 while num <= n * n: for _ in range(2): dx, dy = directions[dir_index % 4] for _ in range(step): if 0 <= x < n and 0 <= y < n: matrix[x][y] = num if prime(num) else 0 num += 1 y += dy x += dx dir_index += 1 step += 1 pprint(matrix)
Standard input is empty
[[0, 0, 0, 0, 53, 0, 0, 0], [0, 37, 0, 0, 0, 0, 0, 31], [59, 0, 17, 0, 0, 0, 13, 0], [0, 0, 0, 5, 0, 3, 0, 29], [61, 0, 19, 0, 0, 2, 11, 0], [0, 41, 0, 7, 0, 0, 0, 0], [0, 0, 0, 0, 23, 0, 0, 0], [0, 43, 0, 0, 0, 47, 0, 0]]