login
Numbers n such that in a rotated-square spiral with positive integers (A215468) among n's eight nearest neighbors five or more are primes.
3

%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