Lập trình Pascal

Trường Nhật Đăng

Học sinh mới
Thành viên
31 Tháng bảy 2017
5
0
1
21
Hà Nội
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
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.

Viết chương trình nhập n,in ra màn hình các số nguyên tố ko vượt quá n và n chứa tất cả bao nhiêu số nguyên tố (<Chỉ dùng các lệnh for...do và if....then>)
Vd: n=8
in ra các số nguyên tố ko vượt quá n là :2;3;5
vậy n chưa 3 số nguyên tố
 

BhofA

Học sinh chăm học
Thành viên
7 Tháng năm 2017
374
281
56
21
Nghệ An
phần đầu tự viết :)

Begin
clrscr; dem:=0; x:=0;
write('Nhap n: '); readln(n);
for i:=2 to n do
begin
x:=0;
for j:=1 to i do if i mod j = 0 then x:=x+1;
if x = 2 then begin write(i); dem:=dem+1; end;
end;
write('Co ',dem,' so ngto');
readln
end.
 

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
phần đầu tự viết :)

Begin
clrscr; dem:=0; x:=0;
write('Nhap n: '); readln(n);
for i:=2 to n do
begin
x:=0;
for j:=1 to i do if i mod j = 0 then x:=x+1;
if x = 2 then
begin write(i); dem:=dem+1; end;
end;
write('Co ',dem,' so ngto');
readln
end.
Code này chưa hoàn hảo ở đoạn bôi đậm như trên
bạn có thể dùng biến Boolean như sau:

Begin
clrscr; dem:=0;
write('Nhap n: '); readln(n);
for i:=2 to n do
begin
ngto := true;
for j:=2 to i-1 do
if i mod j = 0 then
begin
ngto := false;
j := i;
end;
if ngto then
begin
write(i);
dem:=dem+1;
end;
end;
write('Co ',dem,' so ngto');
readln
end.
 

BhofA

Học sinh chăm học
Thành viên
7 Tháng năm 2017
374
281
56
21
Nghệ An
Code này chưa hoàn hảo ở đoạn bôi đậm như trên
bạn có thể dùng biến Boolean như sau:

Begin
clrscr; dem:=0;
write('Nhap n: '); readln(n);
for i:=2 to n do
begin
ngto := true;
for j:=2 to i-1 do
if i mod j = 0 then
begin
ngto := false;
j := i;
end;
if ngto then
begin
write(i);
dem:=dem+1;
end;
end;
write('Co ',dem,' so ngto');
readln
end.
mình nghĩ code thế là cũng okie rồi, chưa hoàn hảo mong bạn chỉ rõ lần sau mình sửa (vì mình ko dùng pascal 1 năm rồi nên sai sót khó tránh khỏi @@) . còn code bạn thì chính xác rồi chỉ có điều là hơi khó hiểu đối với bạn hỏi vì bạn ấy ns là chỉ dùng for...do và if...then
 

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
mình nghĩ code thế là cũng okie rồi, chưa hoàn hảo mong bạn chỉ rõ lần sau mình sửa (vì mình ko dùng pascal 1 năm rồi nên sai sót khó tránh khỏi @@) . còn code bạn thì chính xác rồi chỉ có điều là hơi khó hiểu đối với bạn hỏi vì bạn ấy ns là chỉ dùng for...do và if...then
Nghĩ lại thì mình dùng Boolean cũng không hợp lí, nhưng mình có ý khác là cho j = 2 đến i - 1 và đếm tương tự,
thay vì xét True, False thì ta xét giá trị 1 hoặc 0 của biến x.
 

BhofA

Học sinh chăm học
Thành viên
7 Tháng năm 2017
374
281
56
21
Nghệ An
Nghĩ lại thì mình dùng Boolean cũng không hợp lí, nhưng mình có ý khác là cho j = 2 đến i - 1 và đếm tương tự,
thay vì xét True, False thì ta xét giá trị 1 hoặc 0 của biến x.
mình nghĩ cho chạy thế cũng đc vì số nguyên tố chỉ có 2 ước là 1 và chính nó nên cho chạy từ 1 đến nó, nếu chia hết thì tăng x lên; x=2 thì đương nhiên nó là số ng tố, mình nghxi thế cx ổn và gọn r
 

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
mình nghĩ cho chạy thế cũng đc vì số nguyên tố chỉ có 2 ước là 1 và chính nó nên cho chạy từ 1 đến nó, nếu chia hết thì tăng x lên; x=2 thì đương nhiên nó là số ng tố, mình nghxi thế cx ổn và gọn r
Vậy cũng được nhưng máy tính phải chạy số 1 và số n làm cho thuật toán dài dòng hơn.
 
Top Bottom