Chắc suất Đại học top - Giữ chỗ ngay!! ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.
Chương trình này sử dụng "công nghệ" sàng Eratosthenes để tạo ra danh sách:
sử dụng: nhập số vào phần max rồi chạy
tạo tệp so_nguyen_to.txt
tạo với max=1 jack 5 triệu trong 12 phút (đã công bố với 100 triệu số rồi nên ko để đây)
bye.
Mã:
program sang;
uses crt;
const max = nhap so vao;
var o: array [2..max] of boolean;
i, j, k: uint64;
t: text;
//ts: array [1..max div s] of text;
//f: byte;
{function st(_y:byte) : char;
begin
if _y=0 then st:='0';
if _y=1 then st:='1';
if _y=2 then st:='2';
if _y=3 then st:='3';
if _y=4 then st:='4';
if _y=5 then st:='5';
if _y=6 then st:='6';
if _y=7 then st:='7';
if _y=8 then st:='8';
if _y=9 then st:='9';
end;
function str(_x: uint64): string;
var _i: byte;
_xx: uint64;
begin
_xx:=_x;
repeat
str:=str+st(_xx mod 10);
_xx:= _xx div 10;
until _xx<10;
end;}
begin
clrscr;
textcolor(red);
Writeln('Tao cac so nguyen to duoi ', max, '.');
textcolor(white);
gotoxy(5,3);
write('Nhan enter de tiep tuc.');
readln;
gotoxy(1,3);
Delline;
textcolor(green);
gotoxy(5,4);
writeln('Dang tinh toan:');
//for f:= 1 to max div s do
// begin
// assign(ts[f], 'snt' + str(f) + '.txt');
// rewrite(ts[f]);
// writeln('A');
// readln;
// clrscr;
// end;
assign (t, 'so_nguyen_to.txt');
rewrite(t);
i:=2;
textcolor(lightred);
gotoxy(21,4);
write('Giai doan: 1');
textcolor(white);
while i<trunc(sqrt(max)) do
begin
//writeln(i);
//readln;
k:=k+1;
while o[i] do i:= i+1;
writeln(t, {k:9, '/ ', }i);
gotoxy(1,7);
writeln(k:9, '/ ', i:9, 100*i/max:10:5, '%');
j:=1;
//writeln(max div i);
//readln;
while j*i <= max do
begin
o[i*j]:=true;
j:=j+1
//writeln(j);
//readln;
end;
end;
textcolor(lightblue);
gotoxy(21,4);
write('Giai doan: 2');
textcolor(white);
while i< max do
begin
i:=i+1;
k:=k+1;
while o[i] and (i<>max) do i:=i+1;
//writeln(i);
//readln;
if not o[i] then
begin
writeln(t, {k:9, '/ ', }i);
gotoxy(1,7);
writeln(k:9, '/ ', i:9, 100*i/max:10:5, '%');
end;
end;
gotoxy(1,10);
textcolor(green);
if o[max] then k:= k-1;
close(t);
writeln('Xong!, Co ', k, ' duoi ', max, ' so da tim duoc!');
gotoxy(23,7);
textcolor(yellow);
writeln('100.0000%');
k:=0;
textcolor(blue);
repeat
k:=k+1;
if k=100 then k:=0;
gotoxy(3,12);
delay(1);
{if k<10 then writeln('Nhan phim bat ky de thoat. ');
if (10<=k) and (k<20) then writeln('Nhan phim bat ky de thoat.. ');
if 20<=k then writeln('Nhan phim bat ky de thoat...');}
if k = 1 then writeln('Nhan phim bat ky de thoat.');
if k =51 then writeln(' ')
until keypressed;
//for f:= 1 to max div s do close(ts[f]);
end.
tạo tệp so_nguyen_to.txt
tạo với max=
bye.