ФЭНДОМ


Решение №1. Решето Эратосфена

program Eratosfen;
const length = 20000;
var sieve : array[1..length] of boolean;
    i,j : longint;
begin
    fillChar(sieve,sizeOf(sieve),true);
    for i:= 2 to length do
        if sieve[i] then
        begin
            writeln(i);
            for j:= i + 1 to length do
                if j mod i = 0 then sieve[j]:= false;
        end;
    readln;
end.

Решето Эратосфена


Решение №2. Решето Сундарама

program Sundaram;
const N = 20000;
var numb,i,j,s : integer;
    sieve : array[1..N] of boolean;
begin
    fillChar(sieve,sizeOf(sieve),true);
    writeln(2);
    for i:= 1 to round((sqrt(2*N+1)-1)/2) do
        for j:= i to round((N-i)/(2*i+1)) do
            for s:= 1 to N do
                if sieve[s] = i + j + 2*i*j then sieve[s]:= false;
    for i:= 1 to N do
        if sieve[i] then writeln(2 * sieve[i] + 1);
    readln;
end.

Решето Сундарама