' Generates Inlaid Magic Squares of order 28
' Based on Order 7 Magic Sub Squares with Different Magic Sums
' Tested with Office 2007 under Windows 7
Sub Priem28k2()
Dim a1(750), a(400), a7(49), a28(784), b1(45355), b(45355), c(49)
y = MsgBox("Locked", vbCritical, "Routine Priem28k2")
End
n1 = 0: n9 = 0: n10 = 0: k1 = 1: k2 = 1
Sheets("Klad1").Select
t1 = Timer
For j201 = 98 To 116
j200 = Sheets("Partly28").Cells(j201, 402).Value
MC20 = Sheets("Partly28").Cells(j201, 401).Value
s20 = Sheets("Input20").Cells(j200, 34).Value
s28 = 28 * s20 / 20
If MC20 <> s20 Then
y = MsgBox("Discrepancy in Input", 0, "Priem28k2")
End
End If
Erase a28
For i1 = 1 To 400
a(i1) = Sheets("Partly28").Cells(j201, i1).Value
Next i1
GoSub 700 'Assign to a28() Step 1
Erase a
For j101 = 18 To 33
j100 = Sheets("Input20").Cells(j200, j101).Value
' Define variables
Cntr3 = Sheets("Pairs7").Cells(j100, 6).Value 'Center Element
Pr3 = 2 * Cntr3
s3 = 3 * Cntr3
s4 = 2 * Pr3
nVar1 = Sheets("Pairs7").Cells(j100, 9).Value
For i1 = 1 To nVar1
a1(i1) = Sheets("Pairs7").Cells(j100, 9 + i1).Value
Next i1
m1 = 1: m2 = nVar1
If a1(1) = 1 Then m1 = 2: m2 = m2 - 1
Erase b1
For i1 = m1 To m2
b1(a1(i1)) = a1(i1)
Next i1
' Remove Used Primes
For i1 = 1 To 784
b1(a28(i1)) = 0
Next i1
' Generate Border Concentric Magic Squares (7 * 7)
For j1 = m1 To m2
If b1(a1(j1)) = 0 Then GoTo 10
If b(a1(j1)) = 0 Then b(a1(j1)) = a1(j1): c(1) = a1(j1) Else GoTo 10
a(1) = a1(j1)
a(5) = Pr3 - a(1):
If a(5) < a1(m1) Or a(5) > a1(m2) Then GoTo 50:
If b1(a(5)) = 0 Then GoTo 50
If b(a(5)) = 0 Then b(a(5)) = a(5): c(5) = a(5) Else GoTo 50
For j2 = m1 To m2
If b1(a1(j2)) = 0 Then GoTo 20
If b(a1(j2)) = 0 Then b(a1(j2)) = a1(j2): c(2) = a1(j2) Else GoTo 20
a(2) = a1(j2)
a(6) = Pr3 - a(2):
If a(6) < a1(m1) Or a(6) > a1(m2) Then GoTo 60:
If b1(a(6)) = 0 Then GoTo 60
If b(a(6)) = 0 Then b(a(6)) = a(6): c(6) = a(6) Else GoTo 60
For j3 = m1 To m2
If b1(a1(j3)) = 0 Then GoTo 30
If b(a1(j3)) = 0 Then b(a1(j3)) = a1(j3): c(3) = a1(j3) Else GoTo 30
a(3) = a1(j3)
a(7) = Pr3 - a(3):
If a(7) < a1(m1) Or a(7) > a1(m2) Then GoTo 70:
If b1(a(7)) = 0 Then GoTo 70
If b(a(7)) = 0 Then b(a(7)) = a(7): c(7) = a(7) Else GoTo 70
a(4) = s4 - a(3) - a(2) - a(1)
If a(4) < a1(m1) Or a(4) > a1(m2) Then GoTo 40:
If b1(a(4)) = 0 Then GoTo 40
If b(a(4)) = 0 Then b(a(4)) = a(4): c(4) = a(4) Else GoTo 40
a(8) = Pr3 - a(4):
If a(8) < a1(m1) Or a(8) > a1(m2) Then GoTo 80:
If b1(a(8)) = 0 Then GoTo 80
If b(a(8)) = 0 Then b(a(8)) = a(8): c(8) = a(8) Else GoTo 80
For j9 = m1 To m2
If b1(a1(j9)) = 0 Then GoTo 90
If b(a1(j9)) = 0 Then b(a1(j9)) = a1(j9): c(9) = a1(j9) Else GoTo 90
a(9) = a1(j9)
a(12) = Pr3 - a(9):
If a(12) < a1(m1) Or a(12) > a1(m2) Then GoTo 120:
If b1(a(12)) = 0 Then GoTo 120
If b(a(12)) = 0 Then b(a(12)) = a(12): c(12) = a(12) Else GoTo 120
For j10 = m1 To m2
If b1(a1(j10)) = 0 Then GoTo 100
If b(a1(j10)) = 0 Then b(a1(j10)) = a1(j10): c(10) = a1(j10) Else GoTo 100
a(10) = a1(j10)
a(13) = Pr3 - a(10):
If a(13) < a1(m1) Or a(13) > a1(m2) Then GoTo 130:
If b1(a(13)) = 0 Then GoTo 130
If b(a(13)) = 0 Then b(a(13)) = a(13): c(13) = a(13) Else GoTo 130
a(11) = s4 - a(10) - a(9) - a(1)
If a(11) < a1(m1) Or a(11) > a1(m2) Then GoTo 110:
If b1(a(11)) = 0 Then GoTo 110
If b(a(11)) = 0 Then b(a(11)) = a(11): c(11) = a(11) Else GoTo 110
a(14) = Pr3 - a(11):
If a(14) < a1(m1) Or a(14) > a1(m2) Then GoTo 140:
If b1(a(14)) = 0 Then GoTo 140
If b(a(14)) = 0 Then b(a(14)) = a(14): c(14) = a(14) Else GoTo 140
a7(4) = a(4): a7(5) = a(3): a7(6) = a(2): a7(7) = a(1):
a7(43) = a(5): a7(46) = a(8): a7(47) = a(7): a7(48) = a(6):
a7(8) = a(12): a7(14) = a(9):
a7(15) = a(13): a7(21) = a(10):
a7(22) = a(14): a7(28) = a(11):
For j15 = m1 To m2
If b1(a1(j15)) = 0 Then GoTo 150
If b(a1(j15)) = 0 Then b(a1(j15)) = a1(j15): c(15) = a1(j15) Else GoTo 150
a(15) = a1(j15)
a(18) = Pr3 - a(15):
If a(18) < a1(m1) Or a(18) > a1(m2) Then GoTo 180:
If b1(a(18)) = 0 Then GoTo 180
If b(a(18)) = 0 Then b(a(18)) = a(18): c(18) = a(18) Else GoTo 180
For j16 = m1 To m2
If b1(a1(j16)) = 0 Then GoTo 160
If b(a1(j16)) = 0 Then b(a1(j16)) = a1(j16): c(16) = a1(j16) Else GoTo 160
a(16) = a1(j16)
a(19) = Pr3 - a(16):
If a(19) < a1(m1) Or a(19) > a1(m2) Then GoTo 190:
If b1(a(19)) = 0 Then GoTo 190
If b(a(19)) = 0 Then b(a(19)) = a(19): c(19) = a(19) Else GoTo 190
a(17) = s3 - a(16) - a(15)
If a(17) < a1(m1) Or a(17) > a1(m2) Then GoTo 170:
If b1(a(17)) = 0 Then GoTo 170
If b(a(17)) = 0 Then b(a(17)) = a(17): c(17) = a(17) Else GoTo 170
a(20) = Pr3 - a(17):
If a(20) < a1(m1) Or a(20) > a1(m2) Then GoTo 200:
If b1(a(20)) = 0 Then GoTo 200
If b(a(20)) = 0 Then b(a(20)) = a(20): c(20) = a(20) Else GoTo 200
For j21 = m1 To m2
If b1(a1(j21)) = 0 Then GoTo 210
If b(a1(j21)) = 0 Then b(a1(j21)) = a1(j21): c(21) = a1(j21) Else GoTo 210
a(21) = a1(j21)
a(23) = Pr3 - a(21):
If a(23) < a1(m1) Or a(23) > a1(m2) Then GoTo 230:
If b1(a(23)) = 0 Then GoTo 230
If b(a(23)) = 0 Then b(a(23)) = a(23): c(23) = a(23) Else GoTo 230
a(22) = s3 - a(21) - a(20)
If a(22) < a1(m1) Or a(22) > a1(m2) Then GoTo 220:
If b1(a(22)) = 0 Then GoTo 220
If b(a(22)) = 0 Then b(a(22)) = a(22): c(22) = a(22) Else GoTo 220
a(24) = Pr3 - a(22):
If a(24) < a1(m1) Or a(24) > a1(m2) Then GoTo 240:
If b1(a(24)) = 0 Then GoTo 240
If b(a(24)) = 0 Then b(a(24)) = a(24): c(24) = a(24) Else GoTo 240
a7(1) = a(17): a7(2) = a(16): a7(3) = a(15):
a7(44) = a(19): a7(45) = a(18): a7(49) = a(20):
a7(29) = a(24): a7(35) = a(22):
a7(36) = a(23): a7(42) = a(21):
GoSub 800: If fl1 = 0 Then GoTo 75
For i1 = 1 To 49: a(i1) = a7(i1): Next i1
Erase a7
n10 = n10 + 1: GoSub 750 'Assign to a28()
Erase b, c: GoTo 5 'Assign only first square
75
b(c(24)) = 0: c(24) = 0
240 b(c(22)) = 0: c(22) = 0
220 b(c(23)) = 0: c(23) = 0
230 b(c(21)) = 0: c(21) = 0
210 Next j21
b(c(20)) = 0: c(20) = 0
200 b(c(17)) = 0: c(17) = 0
170 b(c(19)) = 0: c(19) = 0
190 b(c(16)) = 0: c(16) = 0
160 Next j16
b(c(18)) = 0: c(18) = 0
180 b(c(15)) = 0: c(15) = 0
150 Next j15
b(c(14)) = 0: c(14) = 0
140 b(c(11)) = 0: c(11) = 0
110 b(c(13)) = 0: c(13) = 0
130 b(c(10)) = 0: c(10) = 0
100 Next j10
b(c(12)) = 0: c(12) = 0
120 b(c(9)) = 0: c(9) = 0
90 Next j9
b(c(8)) = 0: c(8) = 0
80 b(c(4)) = 0: c(4) = 0
40 b(c(7)) = 0: c(7) = 0
70 b(c(3)) = 0: c(3) = 0
30 Next j3
b(c(6)) = 0: c(6) = 0
60 b(c(2)) = 0: c(2) = 0
20 Next j2
b(c(5)) = 0: c(5) = 0
50 b(c(1)) = 0: c(1) = 0
10 Next j1
' Not found
Erase b, c: n10 = 0: GoTo 2000
5
If n10 = 16 Then
GoSub 850:
If fl1 = 1 Then
n9 = n9 + 1: GoSub 660 'Print results (squares)
If n9 = 8 Then End
n10 = 0: GoTo 2000
End If
End If
Next j101
2000 n10 = 0
Next j201
t2 = Timer
t10 = Str(t2 - t1) + " sec., " + Str(n9) + " Solutions"
y = MsgBox(t10, 0, "Routine Priem28k2")
End
' Assign to a28()
' Step 1
700 a28(30) = a(1): a28(31) = a(2): a28(32) = a(3): a28(33) = a(4): a28(34) = a(5):
a28(58) = a(21): a28(59) = a(22): a28(60) = a(23): a28(61) = a(24): a28(62) = a(25):
a28(86) = a(41): a28(87) = a(42): a28(88) = a(43): a28(89) = a(44): a28(90) = a(45):
a28(114) = a(61): a28(115) = a(62): a28(116) = a(63): a28(117) = a(64): a28(118) = a(65):
a28(142) = a(81): a28(143) = a(82): a28(144) = a(83): a28(145) = a(84): a28(146) = a(85):
a28(37) = a(6): a28(38) = a(7): a28(39) = a(8): a28(40) = a(9): a28(41) = a(10):
a28(65) = a(26): a28(66) = a(27): a28(67) = a(28): a28(68) = a(29): a28(69) = a(30):
a28(93) = a(46): a28(94) = a(47): a28(95) = a(48): a28(96) = a(49): a28(97) = a(50):
a28(121) = a(66): a28(122) = a(67): a28(123) = a(68): a28(124) = a(69): a28(125) = a(70):
a28(149) = a(86): a28(150) = a(87): a28(151) = a(88): a28(152) = a(89): a28(153) = a(90):
a28(44) = a(11): a28(45) = a(12): a28(46) = a(13): a28(47) = a(14): a28(48) = a(15):
a28(72) = a(31): a28(73) = a(32): a28(74) = a(33): a28(75) = a(34): a28(76) = a(35):
a28(100) = a(51): a28(101) = a(52): a28(102) = a(53): a28(103) = a(54): a28(104) = a(55):
a28(128) = a(71): a28(129) = a(72): a28(130) = a(73): a28(131) = a(74): a28(132) = a(75):
a28(156) = a(91): a28(157) = a(92): a28(158) = a(93): a28(159) = a(94): a28(160) = a(95):
a28(51) = a(16): a28(52) = a(17): a28(53) = a(18): a28(54) = a(19): a28(55) = a(20):
a28(79) = a(36): a28(80) = a(37): a28(81) = a(38): a28(82) = a(39): a28(83) = a(40):
a28(107) = a(56): a28(108) = a(57): a28(109) = a(58): a28(110) = a(59): a28(111) = a(60):
a28(135) = a(76): a28(136) = a(77): a28(137) = a(78): a28(138) = a(79): a28(139) = a(80):
a28(163) = a(96): a28(164) = a(97): a28(165) = a(98): a28(166) = a(99): a28(167) = a(100):
a28(226) = a(101): a28(227) = a(102): a28(228) = a(103): a28(229) = a(104): a28(230) = a(105):
a28(254) = a(121): a28(255) = a(122): a28(256) = a(123): a28(257) = a(124): a28(258) = a(125):
a28(282) = a(141): a28(283) = a(142): a28(284) = a(143): a28(285) = a(144): a28(286) = a(145):
a28(310) = a(161): a28(311) = a(162): a28(312) = a(163): a28(313) = a(164): a28(314) = a(165):
a28(338) = a(181): a28(339) = a(182): a28(340) = a(183): a28(341) = a(184): a28(342) = a(185):
a28(233) = a(106): a28(234) = a(107): a28(235) = a(108): a28(236) = a(109): a28(237) = a(110):
a28(261) = a(126): a28(262) = a(127): a28(263) = a(128): a28(264) = a(129): a28(265) = a(130):
a28(289) = a(146): a28(290) = a(147): a28(291) = a(148): a28(292) = a(149): a28(293) = a(150):
a28(317) = a(166): a28(318) = a(167): a28(319) = a(168): a28(320) = a(169): a28(321) = a(170):
a28(345) = a(186): a28(346) = a(187): a28(347) = a(188): a28(348) = a(189): a28(349) = a(190):
a28(240) = a(111): a28(241) = a(112): a28(242) = a(113): a28(243) = a(114): a28(244) = a(115):
a28(268) = a(131): a28(269) = a(132): a28(270) = a(133): a28(271) = a(134): a28(272) = a(135):
a28(296) = a(151): a28(297) = a(152): a28(298) = a(153): a28(299) = a(154): a28(300) = a(155):
a28(324) = a(171): a28(325) = a(172): a28(326) = a(173): a28(327) = a(174): a28(328) = a(175):
a28(352) = a(191): a28(353) = a(192): a28(354) = a(193): a28(355) = a(194): a28(356) = a(195):
a28(247) = a(116): a28(248) = a(117): a28(249) = a(118): a28(250) = a(119): a28(251) = a(120):
a28(275) = a(136): a28(276) = a(137): a28(277) = a(138): a28(278) = a(139): a28(279) = a(140):
a28(303) = a(156): a28(304) = a(157): a28(305) = a(158): a28(306) = a(159): a28(307) = a(160):
a28(331) = a(176): a28(332) = a(177): a28(333) = a(178): a28(334) = a(179): a28(335) = a(180):
a28(359) = a(196): a28(360) = a(197): a28(361) = a(198): a28(362) = a(199): a28(363) = a(200):
a28(422) = a(201): a28(423) = a(202): a28(424) = a(203): a28(425) = a(204): a28(426) = a(205):
a28(450) = a(221): a28(451) = a(222): a28(452) = a(223): a28(453) = a(224): a28(454) = a(225):
a28(478) = a(241): a28(479) = a(242): a28(480) = a(243): a28(481) = a(244): a28(482) = a(245):
a28(506) = a(261): a28(507) = a(262): a28(508) = a(263): a28(509) = a(264): a28(510) = a(265):
a28(534) = a(281): a28(535) = a(282): a28(536) = a(283): a28(537) = a(284): a28(538) = a(285):
a28(429) = a(206): a28(430) = a(207): a28(431) = a(208): a28(432) = a(209): a28(433) = a(210):
a28(457) = a(226): a28(458) = a(227): a28(459) = a(228): a28(460) = a(229): a28(461) = a(230):
a28(485) = a(246): a28(486) = a(247): a28(487) = a(248): a28(488) = a(249): a28(489) = a(250):
a28(513) = a(266): a28(514) = a(267): a28(515) = a(268): a28(516) = a(269): a28(517) = a(270):
a28(541) = a(286): a28(542) = a(287): a28(543) = a(288): a28(544) = a(289): a28(545) = a(290):
a28(436) = a(211): a28(437) = a(212): a28(438) = a(213): a28(439) = a(214): a28(440) = a(215):
a28(464) = a(231): a28(465) = a(232): a28(466) = a(233): a28(467) = a(234): a28(468) = a(235):
a28(492) = a(251): a28(493) = a(252): a28(494) = a(253): a28(495) = a(254): a28(496) = a(255):
a28(520) = a(271): a28(521) = a(272): a28(522) = a(273): a28(523) = a(274): a28(524) = a(275):
a28(548) = a(291): a28(549) = a(292): a28(550) = a(293): a28(551) = a(294): a28(552) = a(295):
a28(443) = a(216): a28(444) = a(217): a28(445) = a(218): a28(446) = a(219): a28(447) = a(220):
a28(471) = a(236): a28(472) = a(237): a28(473) = a(238): a28(474) = a(239): a28(475) = a(240):
a28(499) = a(256): a28(500) = a(257): a28(501) = a(258): a28(502) = a(259): a28(503) = a(260):
a28(527) = a(276): a28(528) = a(277): a28(529) = a(278): a28(530) = a(279): a28(531) = a(280):
a28(555) = a(296): a28(556) = a(297): a28(557) = a(298): a28(558) = a(299): a28(559) = a(300):
a28(618) = a(301): a28(619) = a(302): a28(620) = a(303): a28(621) = a(304): a28(622) = a(305):
a28(646) = a(321): a28(647) = a(322): a28(648) = a(323): a28(649) = a(324): a28(650) = a(325):
a28(674) = a(341): a28(675) = a(342): a28(676) = a(343): a28(677) = a(344): a28(678) = a(345):
a28(702) = a(361): a28(703) = a(362): a28(704) = a(363): a28(705) = a(364): a28(706) = a(365):
a28(730) = a(381): a28(731) = a(382): a28(732) = a(383): a28(733) = a(384): a28(734) = a(385):
a28(625) = a(306): a28(626) = a(307): a28(627) = a(308): a28(628) = a(309): a28(629) = a(310):
a28(653) = a(326): a28(654) = a(327): a28(655) = a(328): a28(656) = a(329): a28(657) = a(330):
a28(681) = a(346): a28(682) = a(347): a28(683) = a(348): a28(684) = a(349): a28(685) = a(350):
a28(709) = a(366): a28(710) = a(367): a28(711) = a(368): a28(712) = a(369): a28(713) = a(370):
a28(737) = a(386): a28(738) = a(387): a28(739) = a(388): a28(740) = a(389): a28(741) = a(390):
a28(632) = a(311): a28(633) = a(312): a28(634) = a(313): a28(635) = a(314): a28(636) = a(315):
a28(660) = a(331): a28(661) = a(332): a28(662) = a(333): a28(663) = a(334): a28(664) = a(335):
a28(688) = a(351): a28(689) = a(352): a28(690) = a(353): a28(691) = a(354): a28(692) = a(355):
a28(716) = a(371): a28(717) = a(372): a28(718) = a(373): a28(719) = a(374): a28(720) = a(375):
a28(744) = a(391): a28(745) = a(392): a28(746) = a(393): a28(747) = a(394): a28(748) = a(395):
a28(639) = a(316): a28(640) = a(317): a28(641) = a(318): a28(642) = a(319): a28(643) = a(320):
a28(667) = a(336): a28(668) = a(337): a28(669) = a(338): a28(670) = a(339): a28(671) = a(340):
a28(695) = a(356): a28(696) = a(357): a28(697) = a(358): a28(698) = a(359): a28(699) = a(360):
a28(723) = a(376): a28(724) = a(377): a28(725) = a(378): a28(726) = a(379): a28(727) = a(380):
a28(751) = a(396): a28(752) = a(397): a28(753) = a(398): a28(754) = a(399): a28(755) = a(400):
Return
' Step 2
750 Select Case n10
Case 1
a28(1) = a(1): a28(2) = a(2): a28(3) = a(3): a28(4) = a(4): a28(5) = a(5): a28(6) = a(6): a28(7) = a(7):
a28(29) = a(8): a28(35) = a(14):
a28(57) = a(15): a28(63) = a(21):
a28(85) = a(22): a28(91) = a(28):
a28(113) = a(29): a28(119) = a(35):
a28(141) = a(36): a28(147) = a(42):
a28(169) = a(43): a28(170) = a(44): a28(171) = a(45): a28(172) = a(46): a28(173) = a(47): a28(174) = a(48): a28(175) = a(49):
Case 2
a28(8) = a(1): a28(9) = a(2): a28(10) = a(3): a28(11) = a(4): a28(12) = a(5): a28(13) = a(6): a28(14) = a(7):
a28(36) = a(8): a28(42) = a(14):
a28(64) = a(15): a28(70) = a(21):
a28(92) = a(22): a28(98) = a(28):
a28(120) = a(29): a28(126) = a(35):
a28(148) = a(36): a28(154) = a(42):
a28(176) = a(43): a28(177) = a(44): a28(178) = a(45): a28(179) = a(46): a28(180) = a(47): a28(181) = a(48): a28(182) = a(49):
Case 3
a28(15) = a(1): a28(16) = a(2): a28(17) = a(3): a28(18) = a(4): a28(19) = a(5): a28(20) = a(6): a28(21) = a(7):
a28(43) = a(8): a28(49) = a(14):
a28(71) = a(15): a28(77) = a(21):
a28(99) = a(22): a28(105) = a(28):
a28(127) = a(29): a28(133) = a(35):
a28(155) = a(36): a28(161) = a(42):
a28(183) = a(43): a28(184) = a(44): a28(185) = a(45): a28(186) = a(46): a28(187) = a(47): a28(188) = a(48): a28(189) = a(49):
Case 4
a28(22) = a(1): a28(23) = a(2): a28(24) = a(3): a28(25) = a(4): a28(26) = a(5): a28(27) = a(6): a28(28) = a(7):
a28(50) = a(8): a28(56) = a(14):
a28(78) = a(15): a28(84) = a(21):
a28(106) = a(22): a28(112) = a(28):
a28(134) = a(29): a28(140) = a(35):
a28(162) = a(36): a28(168) = a(42):
a28(190) = a(43): a28(191) = a(44): a28(192) = a(45): a28(193) = a(46): a28(194) = a(47): a28(195) = a(48): a28(196) = a(49):
Case 5
a28(197) = a(1): a28(198) = a(2): a28(199) = a(3): a28(200) = a(4): a28(201) = a(5): a28(202) = a(6): a28(203) = a(7):
a28(225) = a(8): a28(231) = a(14):
a28(253) = a(15): a28(259) = a(21):
a28(281) = a(22): a28(287) = a(28):
a28(309) = a(29): a28(315) = a(35):
a28(337) = a(36): a28(343) = a(42):
a28(365) = a(43): a28(366) = a(44): a28(367) = a(45): a28(368) = a(46): a28(369) = a(47): a28(370) = a(48): a28(371) = a(49):
Case 6
a28(204) = a(1): a28(205) = a(2): a28(206) = a(3): a28(207) = a(4): a28(208) = a(5): a28(209) = a(6): a28(210) = a(7):
a28(232) = a(8): a28(238) = a(14):
a28(260) = a(15): a28(266) = a(21):
a28(288) = a(22): a28(294) = a(28):
a28(316) = a(29): a28(322) = a(35):
a28(344) = a(36): a28(350) = a(42):
a28(372) = a(43): a28(373) = a(44): a28(374) = a(45): a28(375) = a(46): a28(376) = a(47): a28(377) = a(48): a28(378) = a(49):
Case 7
a28(211) = a(1): a28(212) = a(2): a28(213) = a(3): a28(214) = a(4): a28(215) = a(5): a28(216) = a(6): a28(217) = a(7):
a28(239) = a(8): a28(245) = a(14):
a28(267) = a(15): a28(273) = a(21):
a28(295) = a(22): a28(301) = a(28):
a28(323) = a(29): a28(329) = a(35):
a28(351) = a(36): a28(357) = a(42):
a28(379) = a(43): a28(380) = a(44): a28(381) = a(45): a28(382) = a(46): a28(383) = a(47): a28(384) = a(48): a28(385) = a(49):
Case 8
a28(218) = a(1): a28(219) = a(2): a28(220) = a(3): a28(221) = a(4): a28(222) = a(5): a28(223) = a(6): a28(224) = a(7):
a28(246) = a(8): a28(252) = a(14):
a28(274) = a(15): a28(280) = a(21):
a28(302) = a(22): a28(308) = a(28):
a28(330) = a(29): a28(336) = a(35):
a28(358) = a(36): a28(364) = a(42):
a28(386) = a(43): a28(387) = a(44): a28(388) = a(45): a28(389) = a(46): a28(390) = a(47): a28(391) = a(48): a28(392) = a(49):
Case 9
a28(393) = a(1): a28(394) = a(2): a28(395) = a(3): a28(396) = a(4): a28(397) = a(5): a28(398) = a(6): a28(399) = a(7):
a28(421) = a(8): a28(427) = a(14):
a28(449) = a(15): a28(455) = a(21):
a28(477) = a(22): a28(483) = a(28):
a28(505) = a(29): a28(511) = a(35):
a28(533) = a(36): a28(539) = a(42):
a28(561) = a(43): a28(562) = a(44): a28(563) = a(45): a28(564) = a(46): a28(565) = a(47): a28(566) = a(48): a28(567) = a(49):
Case 10
a28(400) = a(1): a28(401) = a(2): a28(402) = a(3): a28(403) = a(4): a28(404) = a(5): a28(405) = a(6): a28(406) = a(7):
a28(428) = a(8): a28(434) = a(14):
a28(456) = a(15): a28(462) = a(21):
a28(484) = a(22): a28(490) = a(28):
a28(512) = a(29): a28(518) = a(35):
a28(540) = a(36): a28(546) = a(42):
a28(568) = a(43): a28(569) = a(44): a28(570) = a(45): a28(571) = a(46): a28(572) = a(47): a28(573) = a(48): a28(574) = a(49):
Case 11
a28(407) = a(1): a28(408) = a(2): a28(409) = a(3): a28(410) = a(4): a28(411) = a(5): a28(412) = a(6): a28(413) = a(7):
a28(435) = a(8): a28(441) = a(14):
a28(463) = a(15): a28(469) = a(21):
a28(491) = a(22): a28(497) = a(28):
a28(519) = a(29): a28(525) = a(35):
a28(547) = a(36): a28(553) = a(42):
a28(575) = a(43): a28(576) = a(44): a28(577) = a(45): a28(578) = a(46): a28(579) = a(47): a28(580) = a(48): a28(581) = a(49):
Case 12
a28(414) = a(1): a28(415) = a(2): a28(416) = a(3): a28(417) = a(4): a28(418) = a(5): a28(419) = a(6): a28(420) = a(7):
a28(442) = a(8): a28(448) = a(14):
a28(470) = a(15): a28(476) = a(21):
a28(498) = a(22): a28(504) = a(28):
a28(526) = a(29): a28(532) = a(35):
a28(554) = a(36): a28(560) = a(42):
a28(582) = a(43): a28(583) = a(44): a28(584) = a(45): a28(585) = a(46): a28(586) = a(47): a28(587) = a(48): a28(588) = a(49):
Case 13
a28(589) = a(1): a28(590) = a(2): a28(591) = a(3): a28(592) = a(4): a28(593) = a(5): a28(594) = a(6): a28(595) = a(7):
a28(617) = a(8): a28(623) = a(14):
a28(645) = a(15): a28(651) = a(21):
a28(673) = a(22): a28(679) = a(28):
a28(701) = a(29): a28(707) = a(35):
a28(729) = a(36): a28(735) = a(42):
a28(757) = a(43): a28(758) = a(44): a28(759) = a(45): a28(760) = a(46): a28(761) = a(47): a28(762) = a(48): a28(763) = a(49):
Case 14
a28(596) = a(1): a28(597) = a(2): a28(598) = a(3): a28(599) = a(4): a28(600) = a(5): a28(601) = a(6): a28(602) = a(7):
a28(624) = a(8): a28(630) = a(14):
a28(652) = a(15): a28(658) = a(21):
a28(680) = a(22): a28(686) = a(28):
a28(708) = a(29): a28(714) = a(35):
a28(736) = a(36): a28(742) = a(42):
a28(764) = a(43): a28(765) = a(44): a28(766) = a(45): a28(767) = a(46): a28(768) = a(47): a28(769) = a(48): a28(770) = a(49):
Case 15
a28(603) = a(1): a28(604) = a(2): a28(605) = a(3): a28(606) = a(4): a28(607) = a(5): a28(608) = a(6): a28(609) = a(7):
a28(631) = a(8): a28(637) = a(14):
a28(659) = a(15): a28(665) = a(21):
a28(687) = a(22): a28(693) = a(28):
a28(715) = a(29): a28(721) = a(35):
a28(743) = a(36): a28(749) = a(42):
a28(771) = a(43): a28(772) = a(44): a28(773) = a(45): a28(774) = a(46): a28(775) = a(47): a28(776) = a(48): a28(777) = a(49):
Case 16
a28(610) = a(1): a28(611) = a(2): a28(612) = a(3): a28(613) = a(4): a28(614) = a(5): a28(615) = a(6): a28(616) = a(7):
a28(638) = a(8): a28(644) = a(14):
a28(666) = a(15): a28(672) = a(21):
a28(694) = a(22): a28(700) = a(28):
a28(722) = a(29): a28(728) = a(35):
a28(750) = a(36): a28(756) = a(42):
a28(778) = a(43): a28(779) = a(44): a28(780) = a(45): a28(781) = a(46): a28(782) = a(47): a28(783) = a(48): a28(784) = a(49):
End Select
Return
' Print results: squares a28()
660 n1 = n1 + 1
If n1 = 2 Then
n1 = 1: k1 = k1 + 29: k2 = 1
Else
If n9 > 1 Then k2 = k2 + 29
End If
Cells(k1, k2 + 1).Select
Cells(k1, k2 + 1).Font.Color = -4165632
Cells(k1, k2 + 1).Value = s28
i3 = 0
For i1 = 1 To 28
For i2 = 1 To 28
i3 = i3 + 1
Cells(k1 + i1, k2 + i2).Value = a28(i3)
Next i2
Next i1
Return
' Exclude solutions with identical numbers a()
800 fl1 = 1
For j1 = 1 To 49
a2 = a7(j1): If a2 = 0 Then GoTo 810
For j2 = (1 + j1) To 49
If a2 = a7(j2) Then fl1 = 0: Return
Next j2
810 Next j1
Return
' Exclude solutions with identical numbers a28()
850 fl1 = 1
For j1 = 1 To 784
a2 = a28(j1): If a2 = 0 Then GoTo 860
For j2 = (1 + j1) To 784
If a2 = a28(j2) Then fl1 = 0: Return
Next j2
860 Next j1
Return
End Sub