Модуль CRT - Запись простых чисел по спирали

Модуль CRT - Запись простых чисел по спирали

Сегодня я публикую программу, которая выводит простые числа по спирали. Стоит отметить, что данная программа работает только на Pascal ABC.Net (не путать с Pascal ABC), в остальных компиляторах работа программы не гарантируется!

Данная программа сначала записывает числа верхней части спирали, потом правой, нижней, левой, попутно проверяя эти числа на простоту. Я думаю что все знают как проверить число на простоту (кто не знает: для проверки числа на простоту требуется посмотреть сколько делителей у числа, если 2, то число простое, если больше, то не простое), эту задачу выполняет функция prost (описана в задаче). Написать программу в паскале, которая выполняет эту задачу не сложно, поэтому часть комментариев к задаче не написаны, если кому не понятно решение-писать в комментариях просьбу рассказать подробно, а также использовать режим отладки.

Исходный код программы:

uses crt; //Подключение модуля CRT
const nmax=100;
mmax=100;
Type TMatrix=array [1..nmax,1..mmax] of integer;
var
a:TMatrix;
i,j,k,p,n,m:integer;
function prost(n:integer):integer;
var i,k:integer;
begin
for i:=1 to n do{n - число для проверки на простоту}
if n mod i=0 then k:=k+1;
if k=2 then prost:=k
else prost:=1;
end;
begin
i:=0;
k:=0;
p:=2;
writeln('введите размерность массива');
textcolor(14);
read(n,m);
while i<n*m do begin
k:=k+1;
for j:=k to m-k+1 do begin//часть программы выводящая числа верхней горизонтали
i:=i+1;
if prost(p)=2 then begin
a[k,j]:=p;
end
else
while prost(p)<2 do begin
p:=p+1;
a[k,j]:=p;
end;
p:=p+1;
end;
for j:=k+1 to n-k+1 do begin//часть программы выводящая правую вертикаль
i:=i+1;
if prost(p)=2 then begin
a[j,m-k+1]:=p;
end
else begin while prost(p)<>2 do
p:=p+1;
a[j,m-k+1]:=p;
end;
p:=p+1;
end;
for j:=m-k downto k do begin//часть программы выводящая нижнюю горизонталь
i:=i+1;
if prost(p)=2 then begin
a[n-k+1,j]:=p;
end
else while prost(p)<>2 do begin
p:=p+1;
a[n-k+1,j]:=p;
end;
p:=p+1;
end;
for j:=n-k downto k+1 do begin//часть программы выводящая левую вертикаль
i:=i+1;
if prost(p)=2 then begin
a[j,k]:=p;
end
else while prost(p)<>2 do begin
p:=p+1;
a[j,k]:=p;
end;
p:=p+1;
end;
end;
writeln;
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
writeln
end;
end.


План строительства метро - это интересно, но нужно помнить, что программирование на паскале - это просто и увлекательно.
Скачать исходник: spiralkadlyasayta.pas
Дата: 2012-10-26 16:53:13   Просмотров: 5648

Теги: Паскаль Pascal CRT исходник исходники массивы