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]))
Standard input is empty
* * * * *
* * * *
* * * * *
* * * * *
* * * * * *
* * * * * *
* * * *
* * * * * * * * *
* * * * * *
* * * * *
* * * * *
* * * * * *
* *
* * * * * * *
* * * * * * * * * * *
* *
* * * *
* * * * * * * * * *
* * * *
* * * * * * * * * *
* * * * * * * * * *
* * *
* * * * * * * *
* * * * *
* * * * *
* * * * * *
* * * * * * * *
* * * * *
* * * * *
* * * * * *
* * * * *
* * * * *
* * * *
* * * * *
* * * *