Ответы
Ответ дал:
0
В турбо паскале, к сожалению, нет динамических массивов, по крайней мере, я в описаниях ничего не нашел, поэтому придется заранее задать N и M.
Пусть будет N = 10, M = 20. Для чисел меньше миллиона функция Prost работает за вполне приемлемое время.
PROGRAM SredProst;
var A: array [1..10, 1..20] of integer;
var i, k, p: integer, S: real;
FUNCTION Prost(n: integer): integer
var i: integer
BEGIN
Prost:=1;
{esli n delitsia na kakoe-to chislo ot 2 do kornya iz n, to n sostavnoe}
for i:=2 to sqrt(n) do if (n mod i = 0) then Prost:=0;
END;
BEGIN
uses crt; clrscr;
{Vvodim nachalniy massiv}
for i:=1 to 10 do
begin
for k:=1 to 20 do read (A[i,k]);
end;
S:=0; p:=0;
{Ischem prostye chisla, summiruem ih v S i schitaem kol-vo v p}
for i:=1 to 10 do
begin
for k:=1 to 20 do
begin
{Prost - eto funkcia poiska, prostoe chislo ili net}
if (Prost(A[i,k]) = 1) then
begin
S:=S+A[i,k];
p:=p+1;
end;
end;
end;
{Srednee - eto summa chisel, delennaya na ih kol-vo}
S:=S/p;
writeln ('Srednee vseh prostyh chisel ', S);
END.
Пусть будет N = 10, M = 20. Для чисел меньше миллиона функция Prost работает за вполне приемлемое время.
PROGRAM SredProst;
var A: array [1..10, 1..20] of integer;
var i, k, p: integer, S: real;
FUNCTION Prost(n: integer): integer
var i: integer
BEGIN
Prost:=1;
{esli n delitsia na kakoe-to chislo ot 2 do kornya iz n, to n sostavnoe}
for i:=2 to sqrt(n) do if (n mod i = 0) then Prost:=0;
END;
BEGIN
uses crt; clrscr;
{Vvodim nachalniy massiv}
for i:=1 to 10 do
begin
for k:=1 to 20 do read (A[i,k]);
end;
S:=0; p:=0;
{Ischem prostye chisla, summiruem ih v S i schitaem kol-vo v p}
for i:=1 to 10 do
begin
for k:=1 to 20 do
begin
{Prost - eto funkcia poiska, prostoe chislo ili net}
if (Prost(A[i,k]) = 1) then
begin
S:=S+A[i,k];
p:=p+1;
end;
end;
end;
{Srednee - eto summa chisel, delennaya na ih kol-vo}
S:=S/p;
writeln ('Srednee vseh prostyh chisel ', S);
END.
Вас заинтересует
1 год назад
1 год назад
7 лет назад
9 лет назад
9 лет назад
9 лет назад