我希望你能做得很棒。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