%I #4 Aug 12 2012 19:02:22
%S 8,30,138,658,2620,3010,3168,3372,3462,8628,11940,17682,24918,27918,
%T 32560,39228,39790,40128,43608,48532,53268,55372,56040,56712,73362,
%U 85200,85888,90646,96052,101748,102652,104382,112068,113932,115330,119298,128518,129288,131500
%N Numbers n such that in a rotated-square spiral with positive integers (A215468) among n's eight nearest neighbors five or more are primes.
%e Spiral begins:
%e 113
%e 112 85 86
%e 111 84 61 62 87
%e 110 83 60 41 42 63 88
%e 109 82 59 40 25 26 43 64 89
%e 108 81 58 39 24 13 14 27 44 65 90
%e 107 80 57 38 23 12 5 6 15 28 45 66 91
%e 106 79 56 37 22 11 4 1 2 7 16 29 46 67 92
%e 105 78 55 36 21 10 3 8 17 30 47 68 93
%e 104 77 54 35 20 9 18 31 48 69 94
%e 103 76 53 34 19 32 49 70 95
%e 102 75 52 33 50 71 96
%e 101 74 51 72 97
%e 100 73 98
%e 99
%e Among eight nearest neighbors of 30 five are primes: 7, 17, 31, 29, 47.
%o (Python)
%o SIZE = 3335 # must be odd
%o TOP = SIZE*SIZE
%o t = TOP//2
%o prime = [1]*t
%o prime[1]=0
%o for i in range(4,t,2):
%o prime[i]=0
%o for i in range(3,t,2):
%o if prime[i]==1:
%o for j in range(i*3,t,i*2):
%o prime[j]=0
%o grid = [0] * TOP
%o posX = posY = SIZE//2
%o saveX = [0]* (t+1)
%o saveY = [0]* (t+1)
%o grid[posY*SIZE+posX] = 1
%o saveX[1]=posX
%o saveY[1]=posY
%o posX += 1
%o grid[posY*SIZE+posX] = 2
%o saveX[2]=posX
%o saveY[2]=posY
%o n = 3
%o def walk(stepX, stepY, chkX, chkY):
%o global posX, posY, n
%o while 1:
%o posX+=stepX
%o posY+=stepY
%o grid[posY*SIZE+posX]=n
%o saveX[n]=posX
%o saveY[n]=posY
%o n+=1
%o if grid[(posY+chkY)*SIZE+posX+chkX]==0:
%o return
%o while posX!=SIZE-1:
%o walk(-1, 1, -1, -1) # down-left
%o walk(-1, -1, 1, -1) # up-left
%o walk( 1, -1, 1, 0) # up-right
%o walk( 1, 0, 1, 1) # right
%o walk( 1, 1, -1, 1) # down-right
%o for s in range(1, n):
%o posX = saveX[s]
%o posY = saveY[s]
%o a,b=(grid[(posY-1)*SIZE+posX-1]) , (grid[(posY-1)*SIZE+posX+1])
%o c,d=(grid[(posY+1)*SIZE+posX-1]) , (grid[(posY+1)*SIZE+posX+1])
%o e,f=(grid[(posY-1)*SIZE+posX ]) , (grid[(posY+1)*SIZE+posX ])
%o g,h=(grid[ posY *SIZE+posX-1]) , (grid[ posY *SIZE+posX+1])
%o if a*b==0 or c*d==0 or e*f==0 or g*h==0:
%o break
%o z = prime[a]+prime[b]+prime[c]+prime[d]
%o if z+prime[e]+prime[f]+prime[g]+prime[h] >= 5:
%o print s,
%Y Cf. A215468, A215470.
%Y Cf. A039625.
%K nonn
%O 1,1
%A _Alex Ratushnyak_, Aug 11 2012