# Category : A Collection of Games for DOS and Windows

Archive : MAGIC2.ZIP

Filename : MAGIC.DOC

MAGIC - Magic Squares, Version 2 (6/21/88), Copyright (c) 1988 by

Gordon C. Everstine, 12020 Golden Twig Court, Gaithersburg, MD 20878

Telephone: 301-977-0936

One mathematical amusement which has fascinated people for centuries

is the magic square, a square array (or matrix) of numbers having the

property that the sum of the entries in any row, column, or main diagonal

is always the same. For example, a magic square of order 6 is

31 2 3 34 5 36

30 26 9 10 29 7

24 23 16 15 14 19

13 17 22 21 20 18

12 8 28 27 11 25

1 35 33 4 32 6

For this array, the sum of any row, column, or main diagonal is 111.

Although magic squares are mathematical curies, their fascination has

perhaps resulted from the symmetry and order which they possess.

Normally, interest in magic squares is restricted to those formed

from the first N*N positive integers, where N is the order (or size) of

the square. The reason for this seemingly restricted interest is that

squares having negative or fractional numbers offer no additional

generality, because such squares can always be transformed into positive

integer squares by adding or multiplying every entry by a suitable

constant.

The IBM PC program which accompanies this text file computes magic

squares for any order square between 3 and 170. The upper limit of 170

is not a limitation of the algorithms, which are fully general, but of

the memory available in Basic, because the program stores the entire

square in an array. Squares of order 2 do not exist; order 1 is trivial.

Odd and even order squares must be constructed by different

approaches. For odd orders, the program uses a recursive scheme devised

by de la Loubere about 300 years ago. For even orders, the program uses

the Devedec algorithm. Even orders not divisible by 4 are formed

slightly differently from those which are divisible by 4.

The program displays magic squares of order up to 20 in the same way

that the example of order six was displayed above. For larger squares, a

row will not fit on one line of the screen, so that each row of the

square is displayed on several lines of the screen. Squares may also be

printed; for larger squares, fan-fold paper is required, since the

program prints the square in several blocks which can be arranged side-by-

side. All numbers are right-adjusted for ease of reading.

The correctness of any square may be optionally checked. This check

is primarily to verify that the program has not been corrupted during

copying or downloading.

The time required to calculate a magic square is roughly

proportional to N*N, the square of the order. However, this

implementation is efficient enough that most squares are computed

essentially instantaneously. A square of order 170 requires about four

seconds on my XT. The checking of a square takes longer than the

calculation, since sums must be accumulated in double precision.

For more information about magic squares, see, for example, "Magic

Squares and Cubes" by W.S. Andrews (The Open Court Publishing Co.,

Chicago, 1908) or "Mathematical Recreations" by M. Kraitchik (Dover,

1953).