' Generates Eccentric Magic Squares (9 x 9)
' Overlapping Sub Squares
' Tested with Office 2007 under Windows 7
Sub Priem9g1()
Dim a1(81), a(49), a7(49), a3(9), b1(81), b(81), c(49), c7(49), c3(9), a9(81)
y = MsgBox("Locked", vbCritical, "Routine Priem9g1")
End
n2 = 0: n3 = 0: n9 = 0: k1 = 1: k2 = 1
' Generate squares
Sheets("Klad1").Select
t1 = Timer
For j100 = 2 To 368
m9 = Sheets("Input3").Cells(j100, 9)
m8 = Sheets("Input3").Cells(j100, 8)
GoSub 2500 'Read Natural Numbers
For jj9 = m9 To m9 'a3(9)
If b(a1(jj9)) = 0 Then b(a1(jj9)) = a1(jj9): c3(9) = a1(jj9) Else GoTo 1090
a3(9) = a1(jj9)
For jj8 = m8 To m8 'a3(8)
If b(a1(jj8)) = 0 Then b(a1(jj8)) = a1(jj8): c3(8) = a1(jj8) Else GoTo 1080
a3(8) = a1(jj8)
a3(7) = s3 - a3(8) - a3(9):
If a3(7) < a1(m1) Or a3(7) > a1(m2) Then GoTo 1070:
If b1(a3(7)) = 0 Then GoTo 1070
If b(a3(7)) = 0 Then b(a3(7)) = a3(7): c3(7) = a3(7) Else GoTo 1070
a3(6) = 4 * s3 / 3 - a3(8) - 2 * a3(9):
If a3(6) < a1(m1) Or a3(6) > a1(m2) Then GoTo 1060:
If b1(a3(6)) = 0 Then GoTo 1060
If b(a3(6)) = 0 Then b(a3(6)) = a3(6): c3(6) = a3(6) Else GoTo 1060
a3(5) = s3 / 3:
If a3(5) < a1(m1) Or a3(5) > a1(m2) Then GoTo 1050:
If b1(a3(5)) = 0 Then GoTo 1050
If b(a3(5)) = 0 Then b(a3(5)) = a3(5): c3(5) = a3(5) Else GoTo 1050
a3(4) = -2 * s3 / 3 + a3(8) + 2 * a3(9):
If a3(4) < a1(m1) Or a3(4) > a1(m2) Then GoTo 1040:
If b1(a3(4)) = 0 Then GoTo 1040
If b(a3(4)) = 0 Then b(a3(4)) = a3(4): c3(4) = a3(4) Else GoTo 1040
a3(3) = -s3 / 3 + a3(8) + a3(9):
If a3(3) < a1(m1) Or a3(3) > a1(m2) Then GoTo 1030:
If b1(a3(3)) = 0 Then GoTo 1030
If b(a3(3)) = 0 Then b(a3(3)) = a3(3): c3(3) = a3(3) Else GoTo 1030
a3(2) = 2 * s3 / 3 - a3(8):
If a3(2) < a1(m1) Or a3(2) > a1(m2) Then GoTo 1020:
If b1(a3(2)) = 0 Then GoTo 1020
If b(a3(2)) = 0 Then b(a3(2)) = a3(2): c3(2) = a3(2) Else GoTo 1020
a3(1) = 2 * s3 / 3 - a3(9):
If a3(1) < a1(m1) Or a3(1) > a1(m2) Then GoTo 1010:
If b1(a3(1)) = 0 Then GoTo 1010
If b(a3(1)) = 0 Then b(a3(1)) = a3(1): c3(1) = a3(1) Else GoTo 1010
' Transform a3() to a9()
a9(1) = a3(9): a9(2) = a3(7): a9(3) = a3(8):
a9(10) = a3(3): a9(11) = a3(1): a9(12) = a3(2):
a9(19) = a3(6): a9(20) = a3(4):
a7(25) = s2: b(s2) = s2
For j49 = m1 To (m2 - 1) / 2 'a7(49) Inlay
If b(a1(j49)) = 0 Then b(a1(j49)) = a1(j49): c7(49) = a1(j49) Else GoTo 490
a7(49) = a1(j49)
Cells(k1 + 1, 1).Select: Cells(k1 + 1, 1).Value = j49
a7(1) = 2 * s2 - a7(49): If b(a7(1)) = 0 Then b(a7(1)) = a7(1): c7(1) = a7(1) Else GoTo 10
For j46 = m1 To m2 'a7(46) Inlay
If b(a1(j46)) = 0 Then b(a1(j46)) = a1(j46): c7(46) = a1(j46) Else GoTo 460
a7(46) = a1(j46)
Cells(k1 + 2, 1).Select: Cells(k1 + 2, 1).Value = j46
a7(43) = 3 * s2 - a7(46) - a7(49)
If a7(43) < a1(m1) Or a7(43) > a1(m2) Then GoTo 430
If b1(a7(43)) = 0 Then GoTo 430
If b(a7(43)) = 0 Then b(a7(43)) = a7(43): c7(43) = a7(43) Else GoTo 430
a7(28) = 4 * s2 - a7(46) - 2 * a7(49)
If a7(28) < a1(m1) Or a7(28) > a1(m2) Then GoTo 280
If b1(a7(28)) = 0 Then GoTo 280
If b(a7(28)) = 0 Then b(a7(28)) = a7(28): c7(28) = a7(28) Else GoTo 280
a7(22) = 2 * s2 - a7(28): If b(a7(22)) = 0 Then b(a7(22)) = a7(22): c7(22) = a7(22) Else GoTo 220
a7(7) = 2 * s2 - a7(43): If b(a7(7)) = 0 Then b(a7(7)) = a7(7): c7(7) = a7(7) Else GoTo 70
a7(4) = 2 * s2 - a7(46): If b(a7(4)) = 0 Then b(a7(4)) = a7(4): c7(4) = a7(4) Else GoTo 40
For j33 = m1 To m2 'a7(33) Concentric
If b(a1(j33)) = 0 Then b(a1(j33)) = a1(j33): c7(33) = a1(j33) Else GoTo 330
a7(33) = a1(j33)
a7(17) = 2 * s2 - a7(33): If b(a7(17)) = 0 Then b(a7(17)) = a7(17): c7(17) = a7(17) Else GoTo 170
For j32 = m1 To m2 'a7(32) Concentric
If b(a1(j32)) = 0 Then b(a1(j32)) = a1(j32): c7(32) = a1(j32) Else GoTo 320
a7(32) = a1(j32)
a7(31) = 3 * s2 - a7(32) - a7(33)
If a7(31) < a1(m1) Or a7(31) > a1(m2) Then GoTo 310
If b1(a7(31)) = 0 Then GoTo 310
If b(a7(31)) = 0 Then b(a7(31)) = a7(31): c7(31) = a7(31) Else GoTo 310
a7(26) = 4 * s2 - a7(32) - 2 * a7(33)
If a7(26) < a1(m1) Or a7(26) > a1(m2) Then GoTo 260
If b1(a7(26)) = 0 Then GoTo 260
If b(a7(26)) = 0 Then b(a7(26)) = a7(26): c7(26) = a7(26) Else GoTo 260
a7(24) = 2 * s2 - a7(26): If b(a7(24)) = 0 Then b(a7(24)) = a7(24): c7(24) = a7(24) Else GoTo 240
a7(19) = 2 * s2 - a7(31): If b(a7(19)) = 0 Then b(a7(19)) = a7(19): c7(19) = a7(19) Else GoTo 190
a7(18) = 2 * s2 - a7(32): If b(a7(18)) = 0 Then b(a7(18)) = a7(18): c7(18) = a7(18) Else GoTo 180
For j48 = m1 To m2 'a7(48) Remainder
If b(a1(j48)) = 0 Then b(a1(j48)) = a1(j48): c7(48) = a1(j48) Else GoTo 480
a7(48) = a1(j48)
a7(45) = (s1 - 2 * a7(48) - a7(32) - 2 * a7(33)) / 2
If a7(45) < a1(m1) Or a7(45) > a1(m2) Or CInt(a7(45)) <> a7(45) Then GoTo 450
If b1(a7(45)) = 0 Then GoTo 450
If b(a7(45)) = 0 Then b(a7(45)) = a7(45): c7(45) = a7(45) Else GoTo 450
a7(40) = (9 * s2 - 2 * a7(48) - 2 * a7(32) - 2 * a7(33) - a7(46)) / 2
If a7(40) < a1(m1) Or a7(40) > a1(m2) Or CInt(a7(40)) <> a7(40) Then GoTo 400
If b1(a7(40)) = 0 Then GoTo 400
If b(a7(40)) = 0 Then b(a7(40)) = a7(40): c7(40) = a7(40) Else GoTo 400
a7(10) = 2 * s2 - a7(40): If b(a7(10)) = 0 Then b(a7(10)) = a7(10): c7(10) = a7(10) Else GoTo 100
a7(5) = 2 * s2 - a7(45): If b(a7(5)) = 0 Then b(a7(5)) = a7(5): c7(5) = a7(5) Else GoTo 50
a7(2) = 2 * s2 - a7(48): If b(a7(2)) = 0 Then b(a7(2)) = a7(2): c7(2) = a7(2) Else GoTo 20
For j47 = m1 To m2 'a7(47)
If b(a1(j47)) = 0 Then b(a1(j47)) = a1(j47): c7(47) = a1(j47) Else GoTo 470
a7(47) = a1(j47)
a7(44) = 4 * s2 - a7(45) - a7(47) - a7(48)
If a7(44) < a1(m1) Or a7(44) > a1(m2) Then GoTo 440
If b1(a7(44)) = 0 Then GoTo 440
If b(a7(44)) = 0 Then b(a7(44)) = a7(44): c7(44) = a7(44) Else GoTo 440
a7(38) = -s1 + a7(40) + a7(45) + a7(47) + 2 * a7(48) + a7(32) + 2 * a7(33)
If a7(38) < a1(m1) Or a7(38) > a1(m2) Then GoTo 380
If b1(a7(38)) = 0 Then GoTo 380
If b(a7(38)) = 0 Then b(a7(38)) = a7(38): c7(38) = a7(38) Else GoTo 380
a7(12) = 2 * s2 - a7(38): If b(a7(12)) = 0 Then b(a7(12)) = a7(12): c7(12) = a7(12) Else GoTo 120
a7(6) = 2 * s2 - a7(44): If b(a7(6)) = 0 Then b(a7(6)) = a7(6): c7(6) = a7(6) Else GoTo 60
a7(3) = 2 * s2 - a7(47): If b(a7(3)) = 0 Then b(a7(3)) = a7(3): c7(3) = a7(3) Else GoTo 30
For j42 = m1 To m2 'a7(42)
If b(a1(j42)) = 0 Then b(a1(j42)) = a1(j42): c7(42) = a1(j42) Else GoTo 420
a7(42) = a1(j42)
a7(34) = 3 * s2 - a7(40) - a7(42) - a7(48) + a7(49)
If a7(34) < a1(m1) Or a7(34) > a1(m2) Then GoTo 340
If b1(a7(34)) = 0 Then GoTo 340
If b(a7(34)) = 0 Then b(a7(34)) = a7(34): c7(34) = a7(34) Else GoTo 340
a7(29) = -3 * s2 + a7(42) + a7(45) + a7(48) + a7(33)
If a7(29) < a1(m1) Or a7(29) > a1(m2) Then GoTo 290
If b1(a7(29)) = 0 Then GoTo 290
If b(a7(29)) = 0 Then b(a7(29)) = a7(29): c7(29) = a7(29) Else GoTo 290
a7(21) = 2 * s2 - a7(29): If b(a7(21)) = 0 Then b(a7(21)) = a7(21): c7(21) = a7(21) Else GoTo 210
a7(16) = 2 * s2 - a7(34): If b(a7(16)) = 0 Then b(a7(16)) = a7(16): c7(16) = a7(16) Else GoTo 160
a7(8) = 2 * s2 - a7(42): If b(a7(8)) = 0 Then b(a7(8)) = a7(8): c7(8) = a7(8) Else GoTo 80
For j41 = m1 To m2 'a7(41)
If b(a1(j41)) = 0 Then b(a1(j41)) = a1(j41): c7(41) = a1(j41) Else GoTo 410
a7(41) = a1(j41)
a7(39) = 3 * s2 - a7(41) - 2 * a7(47) + a7(32) + a7(33) - a7(49)
If a7(39) < a1(m1) Or a7(39) > a1(m2) Then GoTo 390
If b1(a7(39)) = 0 Then GoTo 390
If b(a7(39)) = 0 Then b(a7(39)) = a7(39): c7(39) = a7(39) Else GoTo 390
a7(37) = -s1 + a7(41) + 2 * a7(47) + 2 * a7(48) + a7(46) + 2 * a7(49)
If a7(37) < a1(m1) Or a7(37) > a1(m2) Then GoTo 370
If b1(a7(37)) = 0 Then GoTo 370
If b(a7(37)) = 0 Then b(a7(37)) = a7(37): c7(37) = a7(37) Else GoTo 370
a7(36) = 9 * s2 - a7(41) - a7(42) - a7(45) - a7(47) - 2 * a7(48) - a7(33) - a7(49)
If a7(36) < a1(m1) Or a7(36) > a1(m2) Then GoTo 360
If b1(a7(36)) = 0 Then GoTo 360
If b(a7(36)) = 0 Then b(a7(36)) = a7(36): c7(36) = a7(36) Else GoTo 360
a7(35) = 6 * s2 - a7(41) - a7(42) - a7(47) - a7(48) - a7(49)
If a7(35) < a1(m1) Or a7(35) > a1(m2) Then GoTo 350
If b1(a7(35)) = 0 Then GoTo 350
If b(a7(35)) = 0 Then b(a7(35)) = a7(35): c7(35) = a7(35) Else GoTo 350
a7(30) = -9 * s2 + a7(40) + a7(41) + a7(42) + a7(45) + a7(47) + 3 * a7(48) + a7(32) + a7(33)
If a7(30) < a1(m1) Or a7(30) > a1(m2) Then GoTo 300
If b1(a7(30)) = 0 Then GoTo 300
If b(a7(30)) = 0 Then b(a7(30)) = a7(30): c7(30) = a7(30) Else GoTo 300
a7(27) = -5 * s2 + a7(41) + 2 * a7(42) + 2 * a7(47) + 2 * a7(48) - a7(32) - a7(33) + a7(49)
If a7(27) < a1(m1) Or a7(27) > a1(m2) Then GoTo 270
If b1(a7(27)) = 0 Then GoTo 270
If b(a7(27)) = 0 Then b(a7(27)) = a7(27): c7(27) = a7(27) Else GoTo 270
a7(23) = 2 * s2 - a7(27): If b(a7(23)) = 0 Then b(a7(23)) = a7(23): c7(23) = a7(23) Else GoTo 230
a7(20) = 2 * s2 - a7(30): If b(a7(20)) = 0 Then b(a7(20)) = a7(20): c7(20) = a7(20) Else GoTo 200
a7(15) = 2 * s2 - a7(35): If b(a7(15)) = 0 Then b(a7(15)) = a7(15): c7(15) = a7(15) Else GoTo 150
a7(14) = 2 * s2 - a7(36): If b(a7(14)) = 0 Then b(a7(14)) = a7(14): c7(14) = a7(14) Else GoTo 140
a7(13) = 2 * s2 - a7(37): If b(a7(13)) = 0 Then b(a7(13)) = a7(13): c7(13) = a7(13) Else GoTo 130
a7(11) = 2 * s2 - a7(39): If b(a7(11)) = 0 Then b(a7(11)) = a7(11): c7(11) = a7(11) Else GoTo 110
a7(9) = 2 * s2 - a7(41): If b(a7(9)) = 0 Then b(a7(9)) = a7(9): c7(9) = a7(9) Else GoTo 90
GoSub 750 'Transform a7() to a9()
' Complete Border
For j10 = m1 To m2
If b(a1(j10)) = 0 Then b(a1(j10)) = a1(j10): c(10) = a1(j10) Else GoTo 2100
a(10) = a1(j10)
a(14) = Pr3 - a(10): If b(a(14)) = 0 Then b(a(14)) = a(14): c(14) = a(14) Else GoTo 2140
For j11 = m1 To m2
If b(a1(j11)) = 0 Then b(a1(j11)) = a1(j11): c(11) = a1(j11) Else GoTo 2110
a(11) = a1(j11)
a(15) = Pr3 - a(11): If b(a(15)) = 0 Then b(a(15)) = a(15): c(15) = a(15) Else GoTo 2150
For j12 = m1 To m2
If b(a1(j12)) = 0 Then b(a1(j12)) = a1(j12): c(12) = a1(j12) Else GoTo 2120
a(12) = a1(j12)
a(16) = Pr3 - a(12): If b(a(16)) = 0 Then b(a(16)) = a(16): c(16) = a(16) Else GoTo 2160
a(13) = (s9 - s92) - a(12) - a(11) - a(10)
If a(13) < a1(m1) Or a(13) > a1(m2) Then GoTo 2130:
If b1(a(13)) = 0 Then GoTo 2130
If b(a(13)) = 0 Then b(a(13)) = a(13): c(13) = a(13) Else GoTo 2130
a(17) = Pr3 - a(13): If b(a(17)) = 0 Then b(a(17)) = a(17): c(17) = a(17) Else GoTo 2170
a(18) = s3 - a(13) - a(16)
If a(18) < a1(m1) Or a(18) > a1(m2) Then GoTo 2180:
If b1(a(18)) = 0 Then GoTo 2180
If b(a(18)) = 0 Then b(a(18)) = a(18): c(18) = a(18) Else GoTo 2180
a(20) = Pr3 - a(18): If b(a(20)) = 0 Then b(a(20)) = a(20): c(20) = a(20) Else GoTo 2200
a(19) = s3 - a(10) - a(15)
If a(19) < a1(m1) Or a(19) > a1(m2) Then GoTo 2190:
If b1(a(19)) = 0 Then GoTo 2190
If b(a(19)) = 0 Then b(a(19)) = a(19): c(19) = a(19) Else GoTo 2190
a(21) = Pr3 - a(19): If b(a(21)) = 0 Then b(a(21)) = a(21): c(21) = a(21) Else GoTo 2210
' Remaining Magic Rectangles
For j22 = m1 To m2
If b(a1(j22)) = 0 Then b(a1(j22)) = a1(j22): c(22) = a1(j22) Else GoTo 2220
a(22) = a1(j22)
a(25) = Pr3 - a(22): If b(a(25)) = 0 Then b(a(25)) = a(25): c(25) = a(25) Else GoTo 2250
For j23 = m1 To m2
If b(a1(j23)) = 0 Then b(a1(j23)) = a1(j23): c(23) = a1(j23) Else GoTo 2230
a(23) = a1(j23)
a(26) = Pr3 - a(23): If b(a(26)) = 0 Then b(a(26)) = a(26): c(26) = a(26) Else GoTo 2260
a(24) = s3 - a(22) - a(23)
If a(24) < a1(m1) Or a(24) > a1(m2) Then GoTo 2240:
If b1(a(24)) = 0 Then GoTo 2240
If b(a(24)) = 0 Then b(a(24)) = a(24): c(24) = a(24) Else GoTo 2240
a(27) = Pr3 - a(24): If b(a(27)) = 0 Then b(a(27)) = a(27): c(27) = a(27) Else GoTo 2270
For j28 = m1 To m2
If b(a1(j28)) = 0 Then b(a1(j28)) = a1(j28): c(28) = a1(j28) Else GoTo 2280
a(28) = a1(j28)
a(31) = Pr3 - a(28): If b(a(31)) = 0 Then b(a(31)) = a(31): c(31) = a(31) Else GoTo 2310
For j29 = m1 To m2
If b(a1(j29)) = 0 Then b(a1(j29)) = a1(j29): c(29) = a1(j29) Else GoTo 2290
a(29) = a1(j29)
a(32) = Pr3 - a(29): If b(a(32)) = 0 Then b(a(32)) = a(32): c(32) = a(32) Else GoTo 2320
a(30) = s3 - a(28) - a(29)
If a(30) < a1(m1) Or a(30) > a1(m2) Then GoTo 2300:
If b1(a(30)) = 0 Then GoTo 2300
If b(a(30)) = 0 Then b(a(30)) = a(30): c(30) = a(30) Else GoTo 2300
a(33) = Pr3 - a(30): If b(a(33)) = 0 Then b(a(33)) = a(33): c(33) = a(33) Else GoTo 2330
a9(9) = a(10): a9(18) = a(14)
a9(17) = a(11): a9(8) = a(15)
a9(65) = a(12): a9(64) = a(16)
a9(73) = a(13): a9(74) = a(17)
a9(55) = a(18): a9(56) = a(20)
a9(7) = a(19): a9(16) = a(21)
a9(4) = a(22): a9(5) = a(23): a9(6) = a(24):
a9(13) = a(25): a9(14) = a(26): a9(15) = a(27):
a9(46) = a(28): a9(37) = a(29): a9(28) = a(30):
a9(47) = a(31): a9(38) = a(32): a9(29) = a(33):
GoSub 800: 'Back Check Identical Numbers a9()
If fl1 = 0 Then GoTo 5
n9 = n9 + 1: GoSub 650 'Print Results a9()
Erase b, c, c3, c7
GoTo 1500 'Print only first square
5
b(c(33)) = 0: c(33) = 0
2330 b(c(30)) = 0: c(30) = 0
2300 b(c(32)) = 0: c(32) = 0
2320 b(c(29)) = 0: c(29) = 0
2290 Next j29
b(c(31)) = 0: c(31) = 0
2310 b(c(28)) = 0: c(28) = 0
2280 Next j28
b(c(27)) = 0: c(27) = 0
2270 b(c(24)) = 0: c(24) = 0
2240 b(c(26)) = 0: c(26) = 0
2260 b(c(23)) = 0: c(23) = 0
2230 Next j23
b(c(25)) = 0: c(25) = 0
2250 b(c(22)) = 0: c(22) = 0
2220 Next j22
b(c(21)) = 0: c(21) = 0
2210 b(c(19)) = 0: c(19) = 0
2190 b(c(20)) = 0: c(20) = 0
2200 b(c(18)) = 0: c(18) = 0
2180 b(c(17)) = 0: c(17) = 0
2170 b(c(13)) = 0: c(13) = 0
2130 b(c(16)) = 0: c(16) = 0
2160 b(c(12)) = 0: c(12) = 0
2120 Next j12
b(c(15)) = 0: c(15) = 0
2150 b(c(11)) = 0: c(11) = 0
2110 Next j11
b(c(14)) = 0: c(14) = 0
2140 b(c(10)) = 0: c(10) = 0
2100 Next j10
b(c7(9)) = 0: c7(9) = 0
90 b(c7(11)) = 0: c7(11) = 0
110 b(c7(13)) = 0: c7(13) = 0
130 b(c7(14)) = 0: c7(14) = 0
140 b(c7(15)) = 0: c7(15) = 0
150 b(c7(20)) = 0: c7(20) = 0
200 b(c7(23)) = 0: c7(23) = 0
230 b(c7(27)) = 0: c7(27) = 0
270 b(c7(30)) = 0: c7(30) = 0
300 b(c7(35)) = 0: c7(35) = 0
350 b(c7(36)) = 0: c7(36) = 0
360 b(c7(37)) = 0: c7(37) = 0
370 b(c7(39)) = 0: c7(39) = 0
390 b(c7(41)) = 0: c7(41) = 0
410 Next j41
b(c7(8)) = 0: c7(8) = 0
80 b(c7(16)) = 0: c7(16) = 0
160 b(c7(21)) = 0: c7(21) = 0
210 b(c7(29)) = 0: c7(29) = 0
290 b(c7(34)) = 0: c7(34) = 0
340 b(c7(42)) = 0: c7(42) = 0
420 Next j42
b(c7(3)) = 0: c7(3) = 0
30 b(c7(6)) = 0: c7(6) = 0
60 b(c7(12)) = 0: c7(12) = 0
120 b(c7(38)) = 0: c7(38) = 0
380 b(c7(44)) = 0: c7(44) = 0
440 b(c7(47)) = 0: c7(47) = 0
470 Next j47
b(c7(2)) = 0: c7(2) = 0
20 b(c7(5)) = 0: c7(5) = 0
50 b(c7(10)) = 0: c7(10) = 0
100 b(c7(40)) = 0: c7(40) = 0
400 b(c7(45)) = 0: c7(45) = 0
450 b(c7(48)) = 0: c7(48) = 0
480 Next j48
b(c7(18)) = 0: c7(18) = 0
180 b(c7(19)) = 0: c7(19) = 0
190 b(c7(24)) = 0: c7(24) = 0
240 b(c7(26)) = 0: c7(26) = 0
260 b(c7(31)) = 0: c7(31) = 0
310 b(c7(32)) = 0: c7(32) = 0
320 Next j32
b(c7(17)) = 0: c7(17) = 0
170 b(c7(33)) = 0: c7(33) = 0
330 Next j33
b(c7(4)) = 0: c7(4) = 0
40 b(c7(7)) = 0: c7(7) = 0
70 b(c7(22)) = 0: c7(22) = 0
220 b(c7(28)) = 0: c7(28) = 0
280 b(c7(43)) = 0: c7(43) = 0
430 b(c7(46)) = 0: c7(46) = 0
460 Next j46
b(c7(1)) = 0: c7(1) = 0
10 b(c7(49)) = 0: c7(49) = 0
490 Next j49
b(c3(1)) = 0: c3(1) = 0
1010 b(c3(2)) = 0: c3(2) = 0
1020 b(c3(3)) = 0: c3(2) = 0
1030 b(c3(4)) = 0: c3(4) = 0
1040 b(c3(5)) = 0: c3(5) = 0
1050 b(c3(6)) = 0: c3(6) = 0
1060 b(c3(7)) = 0: c3(7) = 0
1070 b(c3(8)) = 0: c3(8) = 0
1080 Next jj8
b(c3(9)) = 0: c3(9) = 0
1090 Next jj9
1500 Next j100
t2 = Timer
t10 = Str(t2 - t1) + " sec., " + Str(n9) + " Solutions for sum" + Str(s1)
y = MsgBox(t10, 0, "Routine Priem9g1")
End
' Print results (selected numbers)
645 For i1 = 1 To 49
Cells(n9, i1).Value = a7(i1)
Next i1
Return
' Transform a7() to a9()
750
a9(21) = a7(25): a9(22) = a7(26): a9(23) = a7(27): a9(24) = a7(28): a9(25) = a7(22): a9(26) = a7(23): a9(27) = a7(24):
a9(30) = a7(32): a9(31) = a7(33): a9(32) = a7(34): a9(33) = a7(35): a9(34) = a7(29): a9(35) = a7(30): a9(36) = a7(31):
a9(39) = a7(39): a9(40) = a7(40): a9(41) = a7(41): a9(42) = a7(42): a9(43) = a7(36): a9(44) = a7(37): a9(45) = a7(38):
a9(48) = a7(46): a9(49) = a7(47): a9(50) = a7(48): a9(51) = a7(49): a9(52) = a7(43): a9(53) = a7(44): a9(54) = a7(45):
a9(57) = a7(4): a9(58) = a7(5): a9(59) = a7(6): a9(60) = a7(7): a9(61) = a7(1): a9(62) = a7(2): a9(63) = a7(3):
a9(66) = a7(11): a9(67) = a7(12): a9(68) = a7(13): a9(69) = a7(14): a9(70) = a7(8): a9(71) = a7(9): a9(72) = a7(10):
a9(75) = a7(18): a9(76) = a7(19): a9(77) = a7(20): a9(78) = a7(21): a9(79) = a7(15): a9(80) = a7(16): a9(81) = a7(17):
s92 = a9(25) + a9(33) + a9(41) + a9(49) + a9(57)
Return
' Print results (squares)
650 n2 = n2 + 1
If n2 = 5 Then
n2 = 1: k1 = k1 + 10: k2 = 1
Else
If n9 > 1 Then k2 = k2 + 10
End If
Cells(k1 + 1, k2 + 1).Select
Cells(k1, k2 + 1).Select
Cells(k1, k2 + 1).Font.Color = -4165632
Cells(k1, k2 + 1).Value = n9
i3 = 0
For i1 = 1 To 9
For i2 = 1 To 9
i3 = i3 + 1
Cells(k1 + i1, k2 + i2).Value = a9(i3)
Next i2
Next i1
Return
' Double Check Identical Numbers a9()
800 fl1 = 1
For j1 = 1 To 81
a20 = a9(j1): If a20 = 0 Then GoTo 810
For j2 = (1 + j1) To 81
If a20 = a9(j2) Then fl1 = 0: Return
Next j2
810 Next j1
Return
' Read Natural Numbers
2500 m1 = 1: m2 = 81: s1 = 287: s2 = 41: s3 = 123: Pr3 = 82: s9 = 369
For i1 = m1 To m2
a1(i1) = i1
Next i1
Erase b1
For i1 = m1 To m2
b1(a1(i1)) = a1(i1)
Next i1
Return
End Sub