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 m1 = 20; n1 = 20;
var a: array[1..m1, 1..n1] of integer; s,k:array[1..n1] of integer; i, j, m, n, sum, kol: integer;
begin Write('Введите через пробел число строк и столбцов массива: '); Readln(m, n); Randomize; Writeln(#13#10, 'Исходный массив'); for i := 1 to m do begin for j := 1 to n do begin a[i,j]:= Random(99)+1; Write(a[i,j]:3) end; Writeln end; for j:=1 to n do begin sum:=0; kol:=0; for i:=1 to m do if IsPrime(a[i,j]) then begin sum:=sum+a[i,j]; kol:=kol+1 end; s[j]:=sum; k[j]:=kol end; Writeln('*** Сумма простых элементов по столбцам ***'); for j:=1 to n do Write(s[j]:4); Writeln; Writeln('*** Количество простых элементов по столбцам ***'); for j:=1 to n do Write(k[j]:4); Writeln end.
Тестовое решение:
Введите через пробел число строк и столбцов массива: 12 15
Program z1; var a,b,c,d:integer; procedure nod(x,y:integer;var nod2:integer); begin while x<>y do begin if x>y then begin x:=x-y end else begin y:=y-x end end; nod2:=xend; begin write('a=');readln(a); write('b=');readln(b); write('c=');readln(c); write('d=');readln(d); nod(a,b,b); nod(b,c,c); nod(c,d,d); writeln('nod=',d); readln end.
{ Проверка, является ли число простым }
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
m1 = 20;
n1 = 20;
var
a: array[1..m1, 1..n1] of integer;
s,k:array[1..n1] of integer;
i, j, m, n, sum, kol: integer;
begin
Write('Введите через пробел число строк и столбцов массива: ');
Readln(m, n);
Randomize;
Writeln(#13#10, 'Исходный массив');
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i,j]:= Random(99)+1;
Write(a[i,j]:3)
end;
Writeln
end;
for j:=1 to n do
begin
sum:=0; kol:=0;
for i:=1 to m do
if IsPrime(a[i,j]) then
begin sum:=sum+a[i,j]; kol:=kol+1 end;
s[j]:=sum; k[j]:=kol
end;
Writeln('*** Сумма простых элементов по столбцам ***');
for j:=1 to n do Write(s[j]:4);
Writeln;
Writeln('*** Количество простых элементов по столбцам ***');
for j:=1 to n do Write(k[j]:4);
Writeln
end.
Тестовое решение:
Введите через пробел число строк и столбцов массива: 12 15
Исходный массив
36 74 72 75 25 58 26 45 25 51 35 83 34 8 99
53 55 3 51 31 7 65 91 99 95 40 91 86 80 39
61 5 92 50 28 40 7 93 46 46 20 2 61 45 91
85 10 47 49 54 29 15 10 49 13 70 83 73 79 85
67 40 65 85 90 31 90 83 80 59 46 61 57 5 12
6 4 46 9 10 30 44 37 27 11 46 94 44 38 57
57 34 14 61 79 80 37 75 55 60 94 27 67 90 8
67 58 5 37 7 67 37 64 69 55 24 3 38 75 44
36 47 46 23 2 12 47 96 26 31 69 28 91 49 16
4 76 47 19 43 88 89 7 31 90 21 69 45 6 55
78 98 1 11 24 48 80 44 88 96 21 61 79 7 38
39 46 16 54 52 47 55 20 33 56 46 40 16 33 81
*** Сумма простых элементов по столбцам ***
248 52 103 151 160 181 217 127 31 114 0 291 280 91 0
*** Количество простых элементов по столбцам ***
4 2 5 5 4 5 5 3 1 4 0 5 4 3 0
var a,b,c,d:integer;
procedure nod(x,y:integer;var nod2:integer);
begin
while x<>y do begin
if x>y then begin
x:=x-y
end
else begin
y:=y-x
end
end;
nod2:=xend;
begin
write('a=');readln(a);
write('b=');readln(b);
write('c=');readln(c);
write('d=');readln(d);
nod(a,b,b);
nod(b,c,c);
nod(c,d,d);
writeln('nod=',d);
readln
end.