A383183 Square spiral numbers of the n-th grid point visited by a king always moving to the unvisited point labeled with the smallest possible prime or else composite number.
0, 2, 3, 5, 7, 23, 47, 79, 48, 24, 8, 1, 11, 13, 31, 29, 53, 27, 9, 10, 26, 25, 49, 83, 50, 51, 52, 28, 12, 30, 54, 55, 89, 131, 179, 129, 87, 127, 85, 84, 124, 173, 229, 293, 227, 169, 223, 167, 119, 80, 81, 82, 122, 120, 121, 168, 170, 171, 123, 172, 228, 292, 226, 224, 225, 287, 359, 439
Offset: 0
Examples
From the starting point (0,0) labeled a(0) = 0, the king can reach the point (1,1) labeled 2, which is the smallest possible prime number, so a(1) = 2. Then the king can reach (1,0) labeled 3 which is the next smaller prime number, so a(2) = 3. From there it can go to (-1,0) labeled 5 = a(3), and then to (0,-1) labeled a(4) 7 = a(4). From there, the only available prime number is 23 = a(5) at (1,-2). The king continues in that south-east direction, before walking in north-east direction and then back and further south-east up to and beyond the point (10,-10). Then it goes back in the opposite north-west direction up to (-8,7) and (-5, 8), before heading to the point (3,0) where it gets stuck.
Links
- M. F. Hasler, Table of n, a(n) for n = 0..171 (full sequence).
- M. F. Hasler, Path plot of A383183(0..171). (The 8 dark blue points around the red ending point represent the 8 already visited neighbors.) May 13, 2025.
Crossrefs
Programs
-
Python
from sympy import isprime # = A010051 def square_number(z): return int(4*y**2-y-x if (y := z.imag) >= abs(x := z.real) else 4*x**2-x-y if -x>=abs(y) else (4*y-3)*y+x if -y>=abs(x) else (4*x-3)*x+y) def A383183(n, moves=(1, 1+1j, 1j, 1j-1, -1, -1-1j, -1j, 1-1j)): if not hasattr(A:=A383183, 'terms'): A.terms=[0]; A.pos=0; A.path=[0] while len(A.terms) <= n: try: _,s,z = min((1-isprime(s), s, z) for d in moves if (s := square_number(z := A.pos+d)) not in A.terms) except ValueError: raise IndexError(f"Sequence has only {len(A.terms)} terms") A.terms.append(s); A.pos = z; A.path.append(z) return A.terms[n] A383183(999) # gives IndexError: Sequence has only 172 terms A383183.terms # shows the full sequence; append [:N] to show only N terms import matplotlib.pyplot as plt # this and following to plot the path: plt.plot([z.real for z in A383183.path], [z.imag for z in A383183.path]) plt.show()
Comments