Quadrado Mágico

Um quadrado mágico é uma matriz de inteiros de duas dimensões em que a soma das colunas, das linhas e das diagonais principais é constante. Exemplo de quadrado mágico de 3x3:
8 1 6
3 5 7
4 9 2

Preciso de ajuda para criar esse programa em java; Detalhe: O usuario deve entrar com o tamanho que o quadrado deve ter (no exemplo acima, o tamanho é 3);
Se alguem tivé-lo pronto, melhor ainda, senão aceito todas as dicas

o usuário vai ter q entrar com 2 valores né?

o tamanho do quadrado e o valor da constante né?

se for isso, vc vai ter q fazer (acho) q 2 looping aninhados q ficará testando se a soma dos valores ja chegou na constante…

vc tem alguma coisa pronta ja? e ta com alguma duvida?

Um valor só, que é o tamanho da matriz; Por exemplo, se entrar com valor 5, será uma matriz 5x5 e os numeros a serem ordenados vão de 1 a 25;

Ainda não tenho nada pronto;

pra inserir os valores na matriz…
suponhamos que o usuário tenha digitado 5, então mat[5][5]

[code]int vLido = ?? ; //ler valor, nesse caso 5
int cont = 1;

for(int i=0 ; i < vLido ; i++)
for(int j=0 ; j < vLido ; j++)
mat[i][j] = cont++;
[/code]
vai ficar assim:

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

se ainda tiver dúvida é só perguntar, até mais

Até ai eu entendi, o que preciso agora é uma fórmula para que o programa ordene esses numeros de modo que a soma das colunas, das linhas e das diagonais seja igual;

pensei que vc tivesse a fórmula… foi mal

mas esse negócio é difícil pra caramba… boa sorte

até mais

Descobri uma lógica para distrubuição dos numeros em matrizes de tamanho ímpar:
i) Escrever o número 1 na casa central da primeira linha;
(ii) O número seguinte deverá ser colocado na diagonal, numa casa contígua por cima da anterior, a menos que esta esteja ocupada. Se essa casa pertencer a um quadrado exterior, devemos procura a sua localização na casa correspondente ao quadrado que pretendemos construir;
(iii) Se, no quadrado que estamos a construir, a casa contígua na diagonal estiver preenchida, escreva o número na casa que fica imediatamente abaixo à do número anterior;
(iv) Reppetir as etapas (ii) e (iii) até preencher os restantes números, obtendo um quadrado mágico.

Assim, surge outra duvida:
Existe algo como uma matriz circular? Como implemento isso?

Tipo assim: matriz 3x3

Começa assim:
|… | 1 |… |
| … | … | … |
| … | … | … |

Depois assim; O 2 ficaria fora da matriz, por isso tem que ser circular, pra ficar na mesma posição que esta, e na mesma matriz
…2
| … | 1 | … |
| … | … | … |
| … | … | … |
=
| … | 1 | … |
| … | … | … |
| … | … | 2 |

Mesmo caso agora com o numero 3
| … | 1 | … |
| … | … | … | 3
| … | … | 2 |

  =

| … | 1 | … |
| 3 | … |… |
| … | … | 2 |