Pascal高手进!

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:14:21
在n*n的棋盘上,填入1,2,3...n*n,使得相邻两数之和为素数(质数)。
输入:n(整数)
输出:n*n的方阵
样例:
输入:2
输出:
1 2
这道题不用文件。跪求程序!谢!
4 3
不好意思,忘了说了:
如没有解法就输出impossible

结果千千万啊,我是在freepascal中写的,如果要用turbo pascal需要稍微修改一下(比如去掉点括号)

program fasterprime;
const
maxn=10;
var
n,s:integer;
k:longint;
matrix:array[1..maxn,1..maxn] of integer;
used:array[1..maxn*maxn] of boolean;
isprime:array[1..maxn*maxn*2-1] of boolean;
prime:array[1..maxn*maxn*2-1] of integer;
procedure init();
var i,j,k:integer;
begin
s:=0;
for i:=1 to maxn do for j:=1 to maxn do matrix[i,j]:=-1;
for i:=1 to maxn*maxn do used[i]:=false;
for i:=1 to maxn*maxn*2-1 do begin isprime[i]:=false; prime[i]:=-1; end;
k:=1;
for i:=2 to 2*n*n-1 do
begin
j:=2;
while (i mod j<>0) and (j<=sqrt(i)) do inc(j);
if j>sqrt(i) then
begin
prime[k]:=i;
isprime[i]:=true;
inc(k);
end;
end;
end;

procedure