我希望你能做得很棒。PYTHON 3.6用矢量元素替換矩陣的元素SNAIL/SPIRAL MATRIX AGAIN
我需要你的幫助,我嘗試做一些矩陣這樣
[2 3]
[7 5]
[17 19 23]
[13 2 3 ]
[11 7 5 ]
[17 19 23 29]
[13 2 3 31]
[11 7 5 37]
[53 47 43 41]
正如你所看到的,這些矩陣是由在蝸牛/螺旋形organiced素數。 我快到了。讓我向你解釋我做了什麼。
第一,我提出的「基礎基質」,就像這樣對於4×4例子
[6 7 8 9]
[5 0 1 10]
[4 3 2 11]
[15 14 13 12]
第二,我提出由前16張素數的矢量沒有如圖1所示,本實施例中。就這樣
[ 2. 3. 5. 7. 11. 13. 17. 19. 23. 29. 31. 37. 41. 43. 47. 53.]
第三,我想替換矩陣向量的元素,但是這最後一步是我的問題
我有這個代碼
n = input("enter the length of the matrix (maximum 12): ")
if (n <= 0):
print("please enter a positive integer")
elif (n > 0):
M = np.zeros([n, n])
init = 0
nlimit = n - 1
c = 0
if (n % 2 == 0):
while (c < (n*n)):
for i in range(init, nlimit, 1):
c = c + 1
M[nlimit, i] = c
for i in range(nlimit, init, -1):
c = c + 1
M[i, nlimit] = c
for i in range(nlimit, init, -1):
c = c + 1
M[init, i] = c
for i in range(init, nlimit, 1):
c = c + 1
M[i, init] = c
init = init + 1
nlimit = nlimit - 1
if (n % 2 != 0):
while (c < ((n*n)-1)):
for i in range(nlimit, init, -1):
c = c + 1
M[init, i] = c
for i in range(init, nlimit, 1):
c = c + 1
M[i, init] = c
for i in range(init, nlimit, 1):
c = c + 1
M[nlimit, i] = c
for i in range(nlimit, init, -1):
c = c + 1
M[i,nlimit] = c
init = init +1
nlimit = nlimit - 1
M[(n - 1)/2, (n - 1)/2] = n * n
R = (n*n)*np.ones([n,n])
T = R - M #T = base matrix
A = T
print(T)
q = 1
w=np.zeros(n*n)
w[0] = 2
for i in range(3,1000,2):
p = 0
for j in range (3,i+1,2):
if (i % j == 0):
p = p + 1
if (p == 1):
w[q] = i
q = q + 1
if (q == (n*n)):
break
print (w)
for k in range (0,n*n,1):
for m in range (0, n-1, 1):
for z in range (0, n-1, 1):
if (T[m,z] == k):
A[m,z] = w[k]
print(A)
嘗試我知道我的錯誤在拉斯維加斯6線,但我不知道它是什麼。 此程序將顯示以下三種事 1)的基矩陣 2)的素數矢量 3)與素數
對於n = 4,這是輸出
[[ 6. 7. 8. 9.]
[ 5. 0. 1. 10.]
[ 4. 3. 2. 11.]
[ 15. 14. 13. 12.]]
[ 2. 3. 5. 7. 11. 13. 17. 19. 23. 29. 31. 37. 41. 43. 47. 53.]
[[ 17. 19. 23. 9.]
[ 43. 43. 19. 10.]
[ 37. 19. 43. 11.]
[ 15. 14. 13. 12.]]
由於螺旋矩陣你可以看到最後一個矩陣是不正確的。
我真的很需要你的幫助,我希望你能做到,非常感謝你。
你打算接受在您的任何問題的任何答案嗎? – erasmortg