Автор TIGOR TIGOR задал вопрос в разделе Другие языки и технологии
Скатерть Улама и получил лучший ответ
Ответ от Ringo-chan[гуру]
спираль по часовой стрелке
вывод чисел или звездочек переключает {$define show_numbers}
program rtfm;
var
N, i: integer;
function is_simple( a: integer): boolean; var b, i: integer; begin
is_simple := true;
b := trunc(sqrt(a));
for i:=2 to b do begin
if (a mod i=0) then begin
is_simple := false;
break;
end;
end;
end;
{$define show_numbers}
procedure puti( a: integer); var b, i: integer; begin
{$ifdef show_numbers}
write(a:4);
{$else}
if (a=1) then write('1') else if (is_simple(a)) then write('*') else write(' ');
{$endif}
end;
procedure f( N, i: integer); var o, k, l, r: integer; begin
if (i=1) then begin
o := N*(N-1);
for k:=1 to N do begin
puti(o+k);
end;
end else if (i=N) then begin
o := sqr(N-1)+2;
for k:=1 to N do begin
puti(o-k);
end;
end else begin
l := N*(N-1)-i+2;
r := l-3*N+2*i+1;
puti(l);
f(N-2,i-1);
puti(r);
end;
end;
begin
readln(N);
for i:=1 to N do begin
f(N,i);
writeln;
end;
end.
Источник: кстати, без матрицы. рекурсия ftw
ладно
пахнет деревянными, ток так.