The answer, of course, is that the two squares are odd.
Maybe further explanation is needed. The pictures represent integers in base 4. Obviously no shape is a 0, the shape of smallest area (circle) is a 1, next-smallest (octagon) is a 2, and the largest (square) is the 3. There are three digit positions, innermost (smallest) being least significant, and outermost (largest) being most significant.
Hence:
= 0×4² + 0×4 + 2, a prime
= 1×4² + 3×4 + 1 = 29, a prime
= 0×4² + 1×4 + 1 = 5, a prime
= 3×4² + 1×4 + 1 = 53, a prime
row break
= 1×4² + 0×4 + 1 = 17, a prime
= 2×4² + 1×4 + 1 = 37, a prime
= 1×4² + 3×4 + 3 = 31, a prime
= 3×4² + 2×4 + 3 = 59, a prime
row break
= 1×4² + 2×4 + 1 = 25,
an odd square
= 3×4² + 3×4 + 1 = 61, a prime
= 1×4² + 0×4 + 3 = 19, a prime
= 2×4² + 2×4 + 1 = 41, a prime
row break
= 3×4² + 0×4 + 1 = 49,
an odd square
= 2×4² + 2×4 + 3 = 43, a prime
= 0×4² + 1×4 + 3 = 7, a prime
= 1×4² + 1×4 + 3 = 23, a prime
row break
= 2×4² + 3×4 + 3 = 47, a prime
= 0×4² + 0×4 + 3 = 3, a prime
= 0×4² + 2×4 + 3 = 11, a prime
= 0×4² + 3×4 + 1 = 13, a prime
So there are the eighteen primes that are ≥2 and ≤64, and also two odd squares, 25 and 49, which are therefore the oddities.
Easy peasy lemon squeezy.
And for those wishing to generate variants on this puzzle, the PostScript code follows:
Code: Select all
%!
/PageSize 120 def
/Margin 4 def
/RadiusFactor 0.6 def
/Numbers [
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61
25 49
] def
/UserScratchDict << >> def
% array ShuffleArray -
/ShuffleArray
{
3 dict begin /param exch def
rrand
UserScratchDict /RandomSeed known {UserScratchDict /RandomSeed get srand} if
0 1 param length 1 sub {/i exch def /j rand param length mod def param i param j get param j param i get put put} for end
UserScratchDict /RandomSeed rrand put
srand
} def
Numbers ShuffleArray
/Shape1 % circle
{
newpath CentreX CentreY Radius 0 360 arc closepath
gsave 0.9375 setgray fill grestore 1 setlinewidth 0 setgray stroke
} bind def % /Shape1 circle
/OctagonConstant 2 sqrt 1 sub def
/Shape2 % octagon
{
CentreX Radius add CentreY Radius OctagonConstant mul add moveto
CentreX Radius OctagonConstant mul add CentreY Radius add lineto
CentreX Radius OctagonConstant mul sub CentreY Radius add lineto
CentreX Radius sub CentreY Radius OctagonConstant mul add lineto
CentreX Radius sub CentreY Radius OctagonConstant mul sub lineto
CentreX Radius OctagonConstant mul sub CentreY Radius sub lineto
CentreX Radius OctagonConstant mul add CentreY Radius sub lineto
CentreX Radius add CentreY Radius OctagonConstant mul sub lineto closepath
gsave 0.875 setgray fill grestore 1 setlinewidth 0 setgray 0 setlinejoin stroke
} bind def % /Shape2 octagon
/Shape3 % square
{
CentreX Radius add CentreY Radius add moveto
CentreX Radius sub CentreY Radius add lineto
CentreX Radius sub CentreY Radius sub lineto
CentreX Radius add CentreY Radius sub lineto closepath
gsave 0.75 setgray fill grestore 1 setlinewidth 0 setgray 0 setlinejoin stroke
} bind def % /Shape3 square
/CentreX PageSize 2 div def
/CentreY PageSize 2 div def
Numbers
{
/n exch def
n =
<< /PageSize [ PageSize dup ] >> setpagedevice
/Radius PageSize 2 div Margin sub def
/CurrentExponent 16 def
{
/i n CurrentExponent idiv 4 mod def
i 1 eq {Shape1} if
i 2 eq {Shape2} if
i 3 eq {Shape3} if
CurrentExponent 1 le {exit} if
/CurrentExponent CurrentExponent 4 idiv def
/Radius Radius RadiusFactor mul def
} loop
showpage
} forall