Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Phương pháp sàng nguyên tố


Program Sang_NT;
const Max=10000000;
var A: Array[1..Max] of longint;
    Lim:longint;
    f:text;
//        Sang Nguyen To
procedure Eratos;
var B:Array[1..Max] of boolean;       
    i, j: longint;
begin
    fillchar(B, sizeof(B), true);
    B[1] := false;
    for i := 2 to round(sqrt(Max)) do
        if B[i]=true then 
    begin
        j := i * i;
        while j <= Max do
        begin
            B[j] := false;
            j := j + i;
        end;
    end;
    j:=0;
    for i:=1 to Max do
        if B[i]=true then
    begin
       inc(j);
       A[j]:=i;
    end;
end;
//        Xuat ra
Procedure ExpEratos;
var i:longint;
begin
     assign(f,'E:/NT.txt');
     rewrite(f);
     for i:=1 to Lim do
     write(f,A[i]:8);
     close(f);
end;
//        Main
begin
     Eratos;
     Write('Nhap So luong can xuat: '); readln(Lim);
     ExpEratos;
     readln;
end.