from math import floor, sqrt
def sieve(n):
bs = [True] * (n + 1); bs[0] = bs[1] = False
for m in range (2, floor(sqrt(n)) + 1):
if bs[m]:
for p in range (m * m, n + 1, m):
bs[p] = False
return bs
n = 35
matr = [[' '] * n for _ in range (0, n)]
bs = sieve(n * n)
m = n * n; k = n; i = 0; j = -1; ii = 0; jj = 1
while k > 0:
for _ in range (0, k):
i += ii; j += jj;
if bs[m]:
matr[i][j] = '*'
m -= 1
ii, jj = jj, -ii; k -= abs(ii)
for i in range (0, n):
print(' '.join(matr[i]))
ZnJvbSBtYXRoIGltcG9ydCBmbG9vciwgc3FydAoKZGVmIHNpZXZlKG4pOgoJYnMgPSBbVHJ1ZV0gKiAobiArIDEpOyBic1swXSA9IGJzWzFdID0gRmFsc2UKCWZvciBtIGluIHJhbmdlICgyLCBmbG9vcihzcXJ0KG4pKSArIDEpOgoJCWlmIGJzW21dOgoJCQlmb3IgcCBpbiByYW5nZSAobSAqIG0sIG4gKyAxLCBtKToKCQkJCWJzW3BdID0gRmFsc2UKCXJldHVybiBicwoKbiA9IDM1CgptYXRyID0gW1snICddICogbiBmb3IgXyBpbiByYW5nZSAoMCwgbildCmJzID0gc2lldmUobiAqIG4pCm0gPSBuICogbjsgayA9IG47IGkgPSAwOyBqID0gLTE7IGlpID0gMDsgamogPSAxCndoaWxlIGsgPiAwOgoJZm9yIF8gaW4gcmFuZ2UgKDAsIGspOgoJCWkgKz0gaWk7IGogKz0gamo7IAoJCWlmIGJzW21dOgoJCQltYXRyW2ldW2pdID0gJyonCgkJbSAtPSAxCglpaSwgamogPSBqaiwgLWlpOyBrIC09IGFicyhpaSkKCmZvciBpIGluIHJhbmdlICgwLCBuKToKCXByaW50KCcgJy5qb2luKG1hdHJbaV0pKQ==