# Python Program to Generate Magic Square

#### This Python program generates magic square of any order. Where order is given by user.

According to Wikipedia, in recreational mathematics and combinatorial design, a magic square is a square grid filled with distinct positive integers in the range such that each cell contains a different integer and the sum of the integers in each row, column and diagonal is equal.

## Python Source Code: Magic Square

``````
# Python program to generate magic square
import numpy as np
import sys

order = int(input("Enter order of magic square (order must be odd): "))

# if even number is given then it will be incremented by one
if order%2==0:
order = order+1
print("Given order is even so it is incremented by 1.")

mid = order//2

magic = np.zeros((order,order))

k = mid
j = 0

for i in range(1,order*order+1):
magic[j][k] = i
p = j
j = j-1
q = k
k = k+1

if j<0:
j = order-1

if k>order-1:
k = 0

if magic[j][k]!=0:
k = q
j = p+1

print("Generated Magic Square is: \n")

for j in range(order):
print("|", end="")

for k in range(order):
print("%4d |" % magic[j][k], end="")

print()

for i in range(1, 6*order+1):
print("-", end="")

print()

``````

Output

```Enter order of magic square (order must be odd): 5
Generated Magic Square is:

|  17 |  24 |   1 |   8 |  15 |
------------------------------
|  23 |   5 |   7 |  14 |  16 |
------------------------------
|   4 |   6 |  13 |  20 |  22 |
------------------------------
|  10 |  12 |  19 |  21 |   3 |
------------------------------
|  11 |  18 |  25 |   2 |   9 |
------------------------------
```