Используя тип данных массив.напишите программу,которая реализует алгоритм Эратосфена для...

0 голосов
70 просмотров

Используя тип данных массив.напишите программу,которая реализует алгоритм Эратосфена для вычисления простых чисел,меньше заданного n(n <=200)


Информатика | 70 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

//PascalABC.NET версия 3.2, сборка 1389
//Если программа не запускается, то обновите версию
const
    n = 200;

var
    primes: array of integer;

begin
    primes := ArrGen(n, i -> i);
    
    for var i := 2 to round(sqrt(n)) do
    begin
        if not (primes.Contains(i)) then
            continue;
        var e := SeqWhile(i*i, x -> x + i, x -> x <= n);<br>        primes := primes.Except(e).ToArray;
    end;
    
    writeln('Простые числа < ', n, ':');
    writeln(primes);
    writeln;
    writeln('Время вычисления: ', Milliseconds / 1000);
end.

(55.0k баллов)
0 голосов

//FPC 2.6.4
Program sieve_of_Eratosthenes;
var 
n, i, x:integer; 
a: array[1..32000] of boolean;
begin
 readln(n);
  for i:=2 to (n+1) div 2 do 
  begin
   x:=i*2;
    while x<=n do <br>    begin
     a[x]:=true;
     x:=x+i;
    end;
    x:=0;
  end;
  for i:=1 to n do if not a[i] then write(i,' ');
 readln;
end.

(3.8k баллов)
0

x := i * i; - значительно ускоряет работу

0

и обнулять х в конце не нужно