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
Var n, amount, max_digit, copy_of_n: integer; begin read(n); copy_of_n := n; amount := 0; max_digit := copy_of_n mod 10; while copy_of_n <> 0 do begin {Находим наибольшую цифру в числе} if max_digit < copy_of_n mod 10 then max_digit := copy_of_n mod 10; copy_of_n := copy_of_n div 10; end; copy_of_n := n; while copy_of_n <> 0 do {Считаем количество таких цифр} begin if copy_of_n mod 10 = max_digit then amount := amount + 1; copy_of_n := copy_of_n div 10; end; writeln(amount); 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
begin
read(n);
copy_of_n := n;
amount := 0;
max_digit := copy_of_n mod 10;
while copy_of_n <> 0 do
begin {Находим наибольшую цифру в числе}
if max_digit < copy_of_n mod 10
then
max_digit := copy_of_n mod 10;
copy_of_n := copy_of_n div 10;
end;
copy_of_n := n;
while copy_of_n <> 0 do {Считаем количество таких цифр}
begin
if copy_of_n mod 10 = max_digit
then
amount := amount + 1;
copy_of_n := copy_of_n div 10;
end;
writeln(amount);
end.