Если вы говорит что на экран выводится число 10614 посредством метода "write(2*(n mod 5+3))", то вы ошибаетесь. Допустимые значения выводимых этим выражением чисел соответствуют следующей линейке: 6, 8, 10, 12, 14. Если же после данного цикла выполняется вывод переменной n, то указанное вами выводимое значение так же ошибочно, так как цикл выполняется до того момента пока переменная не станет равна нулю. Я скорее всего ошибаюсь, так как не вижу конкретизированного условия(в каком участке кода выводится значение 10614).
Function IsPrime(n:integer):Boolean; var p:integer; found:Boolean; begin found:= (n Mod 2 = 0); p:=3; while (not found) and (sqr(p)<=n) do begin found:=(n Mod p = 0); p:=p+2 end; IsPrime:=(not found) or (p = 2) end;
const n = 12; var a:array[1..n,1..n] of integer; i,j,s,k:integer; begin Randomize; Writeln('Исходный массив'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(99)+1; { интервал [1..99] } Write(a[i,j]:3) end; Writeln end; { решаем } s:=0; for i:=1 to n do begin k:=a[i,i]; if IsPrime(k) then a[i,i]:=s; s:=s+a[i,i] end; { выводим } Writeln('Результирующий массив'); for i:=1 to n do begin for j:=1 to n do Write(a[i,j]:5); Writeln end end.
Если же после данного цикла выполняется вывод переменной n, то указанное вами выводимое значение так же ошибочно, так как цикл выполняется до того момента пока переменная не станет равна нулю.
Я скорее всего ошибаюсь, так как не вижу конкретизированного условия(в каком участке кода выводится значение 10614).
var
p:integer;
found:Boolean;
begin
found:= (n Mod 2 = 0);
p:=3;
while (not found) and (sqr(p)<=n) do
begin
found:=(n Mod p = 0);
p:=p+2
end;
IsPrime:=(not found) or (p = 2)
end;
const
n = 12;
var
a:array[1..n,1..n] of integer;
i,j,s,k:integer;
begin
Randomize;
Writeln('Исходный массив');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=Random(99)+1; { интервал [1..99] }
Write(a[i,j]:3)
end;
Writeln
end;
{ решаем }
s:=0;
for i:=1 to n do
begin
k:=a[i,i];
if IsPrime(k) then a[i,i]:=s;
s:=s+a[i,i]
end;
{ выводим }
Writeln('Результирующий массив');
for i:=1 to n do
begin
for j:=1 to n do Write(a[i,j]:5);
Writeln
end
end.
Тестовое решение:
Исходный массив
55 99 73 7 53 15 30 67 59 59 56 30
81 6 39 10 10 11 60 74 74 48 78 75
24 40 34 44 31 95 75 52 47 66 58 24
87 99 86 92 41 76 44 4 31 57 34 13
31 48 84 80 39 61 86 7 21 97 83 14
80 85 37 63 84 5 82 16 47 16 22 11
24 68 34 97 5 74 45 66 6 22 14 83
12 94 13 86 79 52 4 89 16 73 12 55
40 80 20 27 74 19 65 16 26 74 57 71
28 88 3 46 53 17 8 59 72 54 52 90
91 96 36 95 13 33 94 50 56 78 58 24
55 19 91 86 56 98 57 37 38 42 58 91
Результирующий массив
55 99 73 7 53 15 30 67 59 59 56 30
81 6 39 10 10 11 60 74 74 48 78 75
24 40 34 44 31 95 75 52 47 66 58 24
87 99 86 92 41 76 44 4 31 57 34 13
31 48 84 80 39 61 86 7 21 97 83 14
80 85 37 63 84 226 82 16 47 16 22 11
24 68 34 97 5 74 45 66 6 22 14 83
12 94 13 86 79 52 4 497 16 73 12 55
40 80 20 27 74 19 65 16 26 74 57 71
28 88 3 46 53 17 8 59 72 54 52 90
91 96 36 95 13 33 94 50 56 78 58 24
55 19 91 86 56 98 57 37 38 42 58 91