var n,i,k : integer; function Prost (a : integer) : boolean; //Возвращает true если число простое var i,b : integer; r : boolean; begin r := true; i := 2; b := a div 2; While (i <= b) and (r) do begin if a mod i = 0 then r := false; i := i +1; end; Result := r; end;
function chet (l : integer) : integer; //Определяет кол-во var i,s : integer; //возможных произведений // в числовой последовательносьти //заданной длины begin s := 0; for i := 0 to k do s := s +(k - i); result := s; end; begin readln (n); k := 0; for i := 2 to n do if prost(i) then begin k := k +1; //write (i,' '); // Вывод простых чисел(если надо, то раскоменьтить) end; writeln (); writeln ('Кол-во простых чисел на диапазоне = ',k); writeln ('Кол-во произведений ',k,' различных чисел : ',chet(k)); end.
Вроде работает, хотя вероятно есть более эффективный алгоритм. Единицу не учитывал как простое. Блок схему рисовать не буду - геморойной, да и не силен я в этом
Просто попытаюсь объяснить алгоритм
1) Мы находим все простые числа на диапазоне от 1 до n (выполняется функцией (prost), и перебором. 2) Исходя из кол-ва найденных простых чисел мы можем найти кол-во их произведений. Т.к все числа различны и идут в порядке увеличения. Это делается с функции (chet)
var
n,i,k : integer;
function Prost (a : integer) : boolean; //Возвращает true если число простое
var
i,b : integer;
r : boolean;
begin
r := true;
i := 2;
b := a div 2;
While (i <= b) and (r) do
begin
if a mod i = 0 then
r := false;
i := i +1;
end;
Result := r;
end;
function chet (l : integer) : integer; //Определяет кол-во
var i,s : integer; //возможных произведений
// в числовой последовательносьти
//заданной длины
begin
s := 0;
for i := 0 to k do
s := s +(k - i);
result := s;
end;
begin
readln (n);
k := 0;
for i := 2 to n do
if prost(i) then begin
k := k +1;
//write (i,' '); // Вывод простых чисел(если надо, то раскоменьтить)
end;
writeln ();
writeln ('Кол-во простых чисел на диапазоне = ',k);
writeln ('Кол-во произведений ',k,' различных чисел : ',chet(k));
end.
Вроде работает, хотя вероятно есть более эффективный алгоритм.
Единицу не учитывал как простое.
Блок схему рисовать не буду - геморойной, да и не силен я в этом
Просто попытаюсь объяснить алгоритм
1) Мы находим все простые числа на диапазоне от 1 до n
(выполняется функцией (prost), и перебором.
2) Исходя из кол-ва найденных простых чисел мы можем найти кол-во их произведений. Т.к все числа различны и идут в порядке увеличения.
Это делается с функции (chet)