اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.
حساب المربعات السحرية يصبح سهلا بعد معرفة خوارزمياتها ومن الممكن برمجتها بأي لغة برمجة. مثلا باستعمال متصفح الويب ولغة جافا سكربت يمكن إنشاء دالة المربع السحري لأي عدد طبيعي كما يلي
<html> <script> function magic(n) { var i=0, j=(n-1)/2, p, k, m=[], m1=[], m2=[]; if(n<=0 || n-Math.ceil(n)!=0) return 'Error: n must be a positive integer..'; if(n==2) return 'Error: there is no magic square of 2x2 !'; if(n%4==0){//Double Even for (i=0; i<n/2; i++){ for (j=0; j<n; j++){ if((((i%4==0)||(i%4==3))&&((j%4==1)||(j%4==2)))||(((j%4==0)||(j%4==3))&&((i%4==1)||(i%4==2)))){ m1[j]= i*n+j+1; m2[n-j-1]= n*(n-i)-j; } else{ m1[j]= n*(n-i)-j; m2[n-j-1]=i*n+j+1; } } m[i]=m1; m[n-i-1]=m2; m1=[]; m2=[]; } } else if(n%2==0){//Single Even p = n/2; m1 = magic(p); for (i=0; i<2*p; i++)m[i]=[]; for (i=0; i<p; i++)for(j=0; j<p; j++){ m[i][j] = m1[i][j]*1; m[i][j+p] = m1[i][j]*1+2*p*p; m[i+p][j] = m1[i][j]*1+3*p*p; m[i+p][j+p] = m1[i][j]*1+p*p; } for(i=0; i<p; i++){ k = (n-2)/4; for(j=0; j<k; j++){ k2=m[i][j]; m[i][j]=m[i+p][j]; m[i+p][j]=k2; } } for(i=0; i<p; i++){ for(j=n-k+1; j<n; j++){ k2=m[i][j]; m[i][j]=m[i+p][j]; m[i+p][j]=k2; } } k2=m[k][0]; m[k][0]=m[k+p][0]; m[k+p][0]=k2; k2=m[k][k]; m[k][k]=m[k+p][k]; m[k+p][k]=k2; } else{// Odd for (k=1; k<=n*n; k++) { m2[i*n +j] = k; i--; j++; if (k%n == 0){ i += 2; j--; } if (j==n)j = 0; if (i==-1) i = n-1; } for(i=0;i<n;i++){for(j=0;j<n;j++)m1[j]=m2[i*n+j];m[i]=m1;m1=[];} } m[0][0]=' '+m[0][0]; for (k=0; k<n; k ++) m[k][n-1] += ' '; return m; } </script> <noscript> Java script must be enabled..<br /> </noscript> <body> Magic square of <input id=ent value="6"> <input type="button" value = " = " onclick ="disp.value=magic(ent.value*1)"> <br /><textarea id="disp" style="width: 780px; height: 300px"> </textarea> </body> </html>