# Trung tâm xử lý sự cố > Hỏi-Đáp về Lập trình >  Pascal hỏi đáp!

## ThuyGa

giải giúp em bài này mấy huynh ơi!
*in ra màn hình n số nguyên tố đầu tiên* *với n là số nguyên tố nhập từ bàn phím.*
bài này dùng lệnh while...do hoặc repeat...until !!!
:a:-------------:a:--------------:a:

----------


## fbi098

lại bài liên quan đến số ngto.


```

[color=#000000]program in_ra_n_so_ngto_dau_tien[/color][color=#007700];[/color][color=#0000bb]uses crt[/color][color=#007700];var [/color][color=#0000bb]i[/color][color=#007700],[/color][color=#0000bb]j[/color][color=#007700],[/color][color=#0000bb]n[/color][color=#007700]:[/color][color=#0000bb]longint[/color][color=#007700];    [/color][color=#0000bb]dem[/color][color=#007700]:[/color][color=#0000bb]word[/color][color=#007700];    [/color][color=#0000bb]ngto[/color][color=#007700]:[/color][color=#0000bb]boolean[/color][color=#007700];[/color][color=#0000bb]begin clrscr[/color][color=#007700]; [/color][color=#0000bb]write[/color][color=#007700]([/color][color=#dd0000]' nhap  n>=1:'[/color][color=#007700]); [/color][color=#0000bb]readln[/color][color=#007700]([/color][color=#0000bb]n[/color][color=#007700]); [/color][color=#0000bb]dem[/color][color=#007700]:=[/color][color=#0000bb]1[/color][color=#007700]; [/color][color=#0000bb]write[/color][color=#007700]([/color][color=#dd0000]'2 '[/color][color=#007700]); [/color][color=#0000bb]j[/color][color=#007700]:=[/color][color=#0000bb]3[/color][color=#007700]; while ([/color][color=#0000bb]dem[/color][color=#007700]<[/color][color=#0000bb]n[/color][color=#007700]) do  [/color][color=#0000bb]begin    ngto[/color][color=#007700]:=[/color][color=#0000bb]true[/color][color=#007700];    for [/color][color=#0000bb]i[/color][color=#007700]:=[/color][color=#0000bb]2 to trunc[/color][color=#007700]([/color][color=#0000bb]sqrt[/color][color=#007700]([/color][color=#0000bb]j[/color][color=#007700])) do    if ([/color][color=#0000bb]j mod i[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]) [/color][color=#0000bb]then begin ngto[/color][color=#007700]:=[/color][color=#0000bb]false[/color][color=#007700];break; [/color][color=#0000bb]end[/color][color=#007700];    if [/color][color=#0000bb]ngto  then begin  write[/color][color=#007700]([/color][color=#dd0000]' '[/color][color=#007700],[/color][color=#0000bb]j[/color][color=#007700]); [/color][color=#0000bb]dem[/color][color=#007700]:=[/color][color=#0000bb]dem[/color][color=#007700]+[/color][color=#0000bb]1[/color][color=#007700]; [/color][color=#0000bb]end[/color][color=#007700];   [/color][color=#0000bb]j[/color][color=#007700]:=[/color][color=#0000bb]j[/color][color=#007700]+[/color][color=#0000bb]2[/color][color=#007700];  [/color][color=#0000bb]end[/color][color=#007700];  [/color][color=#0000bb]readln[/color][color=#007700];[/color][color=#0000bb]end[/color][color=#007700].[/color] 


```

----------


## phuonganh2012

*?_?*

'break' là gì vậy anh?
không dùng 'break' có được không?

----------


## seowebsitetv

break; là lệnh dùng để dừng vòng lặp ( for do, hoặc while do )
vd: vòng for i=1 to n do
thì i phải chạy từ 1 đến n rồi dừng sang câu lệnh tiếp theo. nhưng vì 1 lý do nào đó mà bạn muốn dừng ngay vòng for khi i chưa chạy đến n thì dùng break;
bài trên dùng break; ở vòng for :


```
for i:=2 to trunc(sqrt(j)) do
    if (j mod i=0) then begin ngto:=false;break; end;
```


vì khi j mod i=0 nghĩa là j chia hết cho i=> j ko là sô nguyên tố dừng luôn vòng for ko cần lặp tiếp nữa.
=> tiết kiệm thời gian chạy thôi.
nếu ko hiểu thì bạn bỏ chữ break; cũng ko sao.

----------


## saolaikhong

*!?*

anh có thể làm cách khác không khai báo biến kiểu boolean không?

----------


## 513minh891

tớ mạn phép chỉnh lại code để không dùng boolean:



> program in_ra_n_so_ngto_dau_tien;
> uses crt;
> var ngto,i,j,n:longint;
> dem:word;
> 
> 
> begin
> clrscr;
> write(' nhap n>=1:');
> ...

----------


## hangngand

ối giời ơi? chung quy là bạn vẫn ko hiểu đc vấn đề, ko hiểu đc thuật toán.
quan trong là cách tư duy để làm 1 bài toán.
bài này: phân tích
+) phải biết cách kiểm tra 1 số là số nguyên tố.
+) dùng biến dem để đếm số nguyên tố đã tìm đc.
cho biến j chạy tăng dần từ 3 , nếu kiêm tra đc j là số nguyên tố thì in ra và đếm tăng lên. 
khi nào dem =n thì dùng.

chung quy lại bạn hãy học lại cách kiểm tra 1 số là số nguyên tố đi thì hơn. ( còn mấy yêu cầu như: tìm n sô ngto đầu tiên, hay in ra các số ngto từ 1-->n chỉ là râu ria phát triển từ bài toán ktr số ngto thôi)

biến ngto khai bảo kiểu boolean là kiểu logic ( đúng hoặc sai): dùng biến ngto là biến trung gian để kiểm tra xem số đó là số ng tô hay ko.
ko muốn dùng kiểu boolean thì:
vd: khai báo *var ngto:byte;*
code trên chỗ nào có *false* thì thay bằng *0* ( hay số nào tùy bạn thích), *true* thì thay bằng *1* ( hay số nào cũng đc miễn là khác vơi số gán cho false)
*if ngto* thì thay bằng *if ngto=1*
khổ quá nó chẳng có khác gì nhau mới--- ko hiểu thì nó khổ ở chỗ đó đấy.

----------


## huahien

> ối giời ơi? chung quy là bạn vẫn ko hiểu đc vấn đề, ko hiểu đc thuật toán.
> quan trong là cách tư duy để làm 1 bài toán.
> bài này: phân tích
> +) phải biết cách kiểm tra 1 số là số nguyên tố.
> +) dùng biến dem để đếm số nguyên tố đã tìm đc.
> cho biến j chạy tăng dần từ 3 , nếu kiêm tra đc j là số nguyên tố thì in ra và đếm tăng lên. 
> khi nào dem =n thì dùng.
> 
> chung quy lại bạn hãy học lại cách kiểm tra 1 số là số nguyên tố đi thì hơn. ( còn mấy yêu cầu như: tìm n sô ngto đầu tiên, hay in ra các số ngto từ 1-->n chỉ là râu ria phát triển từ bài toán ktr số ngto thôi)
> ...


bạn nói thế này liệu có động chạm gì tới bạn chủ pic không? bạn ấy mới học, chưa hiểu được nên mới nhờ, bạn nói thế này liệu lần sau bạn ấy có còn dám hỏi nữa không? nhỡ hỏi lại bị "ối giời ơi" thì sao? lần sau bạn dùng từ nhẹ nhàng hơn nhé.

----------


## matngocads2015

*?!*

tại sao j lại được gán =3 từ lúc đầu, anh ginta?[img]data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaabaqmaaaa  l21bkaaaaa1bmvexh5pjm+ykvaaaaaxrstlmaqobyzgaaaapjr  efucndjyaaaaaiaaeihvdmaaaaasuvork5cyii=[/img]

----------


## zincos

hehe! đúng là em thật thà thiệt! 
1, 2, 3 là những số nguyên tố mà em xét nó làm gì. vì thế phải xét từ 3 chứ.

----------


## sangdv

> giải giúp em bài này mấy huynh ơi!
> *in ra màn hình n số nguyên tố đầu tiên* *với n là số nguyên tố nhập từ bàn phím.*
> bài này dùng lệnh while...do hoặc repeat...until !!!
> :a:-------------:a:--------------:a:


hì hì, đề bài em viết nhầm mà mọi người vẫn hiểu đúng!
phải là "với n là số nguyên" chứ không phải là "số nguyên tố" nhập từ bàn phím!!!:-?
---------------------------------bài viết đã được trộn ---------------------------------



> giải giúp em bài này mấy huynh ơi!
> *in ra màn hình n số nguyên tố đầu tiên* *với n là số nguyên tố nhập từ bàn phím.*
> bài này dùng lệnh while...do hoặc repeat...until !!!
> ---------------------------


hì hì, đề bài em viết nhầm mà mọi người vẫn hiểu đúng!
phải là "với n là số nguyên" chứ không phải là "số nguyên tố" nhập từ bàn phím!!!:-?

:-?

----------


## baloenglish.2015

> hehe! đúng là em thật thà thiệt! 
> 1, 2, 3 là những số nguyên tố mà em xét nó làm gì. vì thế phải xét từ 3 chứ.


ấy chết 1 ko là số nguyên tố mà bạn.
2 là số ngto nhỏ nhất và cũng là số ngto chẵn duy nhât nên ta in ra luôn, việc còn lại bây giờ ta chỉ cần ktra các số lẻ thôi.

----------

