Trong vài ngày qua, tôi đã nghiên cứu câu hỏi sau trên StackExchange về một vòng xoắn các số nguyên. Chúng tôi đang tìm kiếm một công thức đóng cho tọa độ của phần tử \(n\) -th trong đường xoắn ốc số nguyên sau đây, kéo dài từ điểm gốc ra bên ngoài và xa hơn và xa hơn đến vô tận:
.. 9 10 11 12
23 8 1 2 13
22 7 0 3 14
21 6 5 4 15
20 19 18 17 16Đầu tiên chúng ta chia các số tự nhiên thành các nhóm sau:
$$G_1 = \{ 1,...,8 \}\\G_2 = \{ 9, ..., 24 \}\\G_3 = \{ 25, ... 48 \}\\...\\G_k = \left\{ (2k-1)^2, (2k+1)^2 - 1 \right\}$$
Chúng tôi gọi
$$a^2 = \left(\left \lfloor \left( \frac{\left \lfloor \sqrt{n} \right \rfloor + 1}{2} \right) \right \rfloor \cdot 2 - 1 \right)^2$$
số bắt đầu trong một nhóm.
Trong một nhóm có bốn nhóm con có cùng kích thước \(G_1\) cho \(G_1\) là \(g_1 = \{ 1,2 \}, g_2 = \{ 3,4 \}, g_3 = \{ 5,6 \}, g_4 = \{7,8\}\) ). Nếu \(n\) từ nhóm con này sang nhóm con tiếp theo, hướng trên đường đi của hình xoắn ốc (theo chiều kim đồng hồ trong ví dụ của chúng ta) cũng được thay đổi cùng một lúc. Chúng tôi nhận được hướng hiện tại \( b \in \{0,1,2,3\} \) bằng cách chia vị trí \(na^2\) trong một nhóm cho số phần tử trong một nhóm con:
$$b = \left \lfloor \frac{ n - a^2 }{ \text{abs}\left( a \right) + 1 } \right \rfloor$$
Bây giờ chúng ta có thể xác định phần tử đầu tiên trong nhóm con \(g_n\) bằng cách thêm bội \(b\) của số \(a+1\) các phần tử trong nhóm vào số ban đầu \(a^2\):
$$c = a^2 + b \cdot (a+1)$$
Bây giờ chúng ta có thể xác định bằng cách quan sát đơn giản:
$$x_{right} = \left(n - c - \frac{ a + 1 }{2}+1\right),\, y_{right} = \left(\frac{ a + 1 }{2}\right) \\ x_{bottom} = \left(\frac{ a + 1 }{2}\right),\, y_{bottom} = (-1) \cdot \left( n - c - \frac{ a + 1 }{2}+1\right) \\ x_{left} = (-1) \cdot \left(n - c - \frac{ a + 1 }{2}+1\right),\, y_{left} = (-1) \cdot \left(\frac{ a + 1 }{2}\right) \\ x_{top} = (-1) \cdot \left(\frac{ a + 1 }{2}\right),\, y_{top} = \left( n - c - \frac{ a + 1 }{2}+1\right)$$
Bây giờ chúng ta muốn biểu diễn \(f(n)\) dưới dạng công thức đóng và không phân biệt chữ hoa chữ thường. Để làm được điều này, chúng ta sử dụng hàm signum; tôi đã mô tả quy trình ở đây . Để có được một công thức thuần túy phụ thuộc vào \(n\) , ta có được:

Với sự trợ giúp của SVG.js , chúng ta có thể thấy trong hình dung nhỏ này rằng toàn bộ mọi thứ thực sự hoạt động:
See the Pen ulam spiral by David Vielhuber (@vielhuber) on CodePen.
Đường xoắn ốc còn được gọi là đường xoắn ốc Ulam và có mối quan hệ thú vị với các số nguyên tố.