Một vòng xoắn của những con số

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\)\(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)$$

Chúng tôi muốn biểu diễn \(f(n)\) trong một biểu diễn đóng và cũng không có sự phân biệt chữ hoa chữ thường. Chúng tôi sử dụng chức năng Signum, tôi đã mô tả quy trình ở đây . Vì vậy, chúng tôi nhận được một công thức thuần túy dưới dạng một hàm của \(n\) , chúng tôi nhận đượ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ố.

Trở lại