<em>// PascalABC.NET 3.3, сборка 1555 от 21.10.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (p,q,s):=(1,2,0);
var k:=0;
Write('(1,5) ');
for var i:=3 to 1000 do begin
var (flag,j,r):=(True,2,Round(Sqrt(i)));
while flag and (j<=r) do
if i mod j = 0 then flag:=false
else j+=1;
if flag then begin
(p,q,s):=(q,s,i);
if q-p=4 then Write('(',p,',',q,') ')
else
if s-p=4 then Write('(',p,',',s,') ')
end
end
end.
<u>Результат</u>
(1,5) (3,7) (7,11) (13,17) (19,23) (37,41) (43,47) (67,71) (79,83) (97,101) (103,107) (109,113) (127,131) (163,167) (193,197) (223,227) (229,233) (277,281) (307,311) (313,317) (349,353) (379,383) (397,401) (439,443) (457,461) (463,467) (487,491) (499,503) (613,617) (643,647) (673,677) (739,743) (757,761) (769,773) (823,827) (853,857) (859,863) (877,881) (883,887) (907,911) (937,941) (967,971)
<h2>Нумерация</h2><h3>Можно ли пронумеровать от 1 до 16? </h3>
Нумерация всегда происходит с 0. Но никак не с 1.
<h2>Создание массива массивов</h2>
Можно. Это называется двумерный массив. Создаётся таким образом:
int arr[N][M], где N - это строки с массивом, в которых есть ячейки, а M - это столбцы с массивами, в которых тоже есть ячейки.
Таким образом у Вас создаётся поле N x M.
Допустим, у Вас есть массив 15 · 15 типа int. Чтобы обратиться к массиву с индексом M = 7 и N = 3, то обращаться нужно так:
arr[3][7]
<h2>Работа с массивом</h2><h2>Перебор</h2>
Если Вам нужно обратиться ко всем элементам двумерного массива, необходимо создать двойной цикл: по строкам, а внутри него по столбцам:
- for(int i = 0; i < N; i++)
- {
- for(int j = 0; j < M; j++)
- {
- arr[i][j];
- }
- }
Я думаю, отсюда нетрудно вывести, как, например, проверять элементы на чётность:
- for(int i = 0; i < N; i++)
- {
- for(int j = 0; j < M; j++)
- {
- if(arr[i][j] % 2 == 0)
- {
- // ...
- }
- }
- }