Hôm qua mình nhầm in các số từ 1 đến 300.Bài sửa lại đã test:
uses crt;
var n,i,j,m,k:integer;
begin
clrscr;
write('Nhap vao mot so n=');
readln(n);
writeln('Cac so nguyen to nho hon ',n,' la:');
for i:=1 to n do
begin
k:=0;
m:=round(sqrt(i));
for j:=1 to m do
if i mod j =0 then k:=k+1;
if k=1 then write(i:10);
end;
readln
end.
Muốn kiểm tra 1 số x có phải là số nguyên tố không thì ta kiểm tra xem trong khoảng từ 1 đến sqrt(x) có bao nhiêu ước của x.Nếu nó có 1 ước là 1 thì khẳng định số x là số nguyên tố.Do vậy trong bài này:
n-Số ngẫu nhiên nhập vào từ bàn phím
i-Biến chạy từ 1 đến n
j-Biến chạy từ 1 đến sqrt(i) để kiểm tra xem j có phải là ước của i không.
k-Biến đếm số ước của i.Giá trị ban đầu cho là 0.Nếu i chia hết cho j thì tăng lên 1.
Do j chạy từ 1 nên luôn có 1 ước là 1 ==>Khi k=1 thì khẳng định số đó là số nguyên tố và thoát ra ngoài thực hiện vòng lặp tiếp theo.
Có 1 người đang xem chủ đề. (0 thành viên và 1 khách)
Đánh dấu