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.