Задание:
В числовом квадратном массиве постройте "спираль Улама” следующим
образом: начиная с центрального элемента по спирали против часовой
стрелки, массив заполняется натуральными числами от 1 до N^2.
Определить количество простых чисел в массиве.
Исходный код: Program name; uses crt; var a:array[1..50,1..50]
of integer; i,j,m,n:integer; u,v,k,kol,t,x,y,add,dir,f,h:integer; b:array[1..2500]
of integer; p:array[1..2500] of integer; g,r,q:integer;
{fun-ya
poiska prostogo 4isla} function Prostoe(d:longint):boolean; var
e:integer; begin Prostoe:=true; for e:=2 to d div 2 do
if D mod 2=0 then begin Prostoe:=false; Break;
end; end;
begin clrScr;
writeln('input razmer
matrici: '); readln(n); m:=n*n;
g:=1; for i:=1 to n do begin
for j:=1 to n do begin a[i,j]:=g; g:=g+1;
writeln; end; end;
for i:=1 to n do begin for
j:=1 to n do write(a[i,j]:3,' '); writeln; end;
k:=1; kol:=1; for
i:=1 to n do begin {writeln;} for j:=1 to n do
begin b[k]:=a[i,j]; k:=k+1; kol:=kol+1;
end; end;
writeln; for i:=1 to kol-1 do begin
for j:=1 to kol-2 do begin if b[j]<b[j+1] then
begin t:=b[j]; b[j]:=b[j+1];
b[j+1]:=t; end; end; end; {for j:=1 to m do
write (b[j],' '); writeln;}
x:=0; y:=1; add:=n; dir:=1; f:=1; while
add<>0 do begin i:=0; while i<>add do
begin x:=x+dir; a[y,x]:=b[f]; f:=f+1;
i:=i+1; end; i:=0; add:=add-1; while i<>add
do begin y:=y+dir; a[y,x]:=b[f];
f:=f+1; i:=i+1; end; dir:=dir*(-1); end;
writeln; {vivod
vsego massiva} for i:=1 to n do begin for j:=1 to n do
write(a[i,j]:3,' '); {vivod vsego massiva} writeln; end; {poisk
prostogo 4isla} q:=1; for i:=1 to n do begin for J:=1
to n do begin if Prostoe(a[i,j]) then q:=q+1;
end; end; writeln; writeln('kol-wo prostih 4isel= ',q);
{vivod kol-va prosogo 4isla}
readln; end.
|