import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个奇数:");
int n = sc.nextInt();//有键盘输入一个奇数
if( n%2 == 0 ){
System.out.println("请输入一个奇数");
return;
}
int i,j;
int array[][] = new int[n][n];//创建一个n行n列数列
int a = n-1;//获取最后一行的行下标
int b = n/2;//获取中间列的列下标
//判断一个字符串还不是回文字符串
for ( i = 1 ; i <= n*n ; i++ ){
array[a++][b++] = i;//给最后一行的中间元素赋值为1
if( i%n == 0 ){ //判断当前i值是否为n的倍数
a = a-2; //如果是则放在上行同列位置上
b = b-1;
}else{ //否则放在下行的下一列
a = a%n;
b = b%n;
}
}
System.out.println(n+"阶幻方如下:");
for ( i = 0 ; i < n ; i++){//将幻方输出
for ( j = 0 ; j < n ; j++){
System.out.print(" "+array[i][j]);
}
System.out.println();
}
}
}