Code:
Function nt(x:integer):boolean;
Var i:integer;
Begin
nt:=true;
For i:=2 to trunc(sqrt(x)) do
if x mod i =0 then
nt:=false;
End;
[=========> Bổ sung bài viết <=========]
Được gửi bởi
elnino_020993
còn có thể cải tiến được nữa đấy bạn ạh
vòng for làm cho i có thể là số chẵn,
mình đề nghị dùng vòng repeat .. until
chỉ phải ktra ban đầu với giá trị i=2;
sau đó i=3, qua mỗi vòng lặp thì inc(i,2);
Có thể qua mỗi vòng lặp tăng i lên 2 sẽ bớt thời gian thực hiện. Vì ko bao giờ có 2 số tự nhiên liên tiếp cùng là nguyên tố đúng ko bạn nhỉ
[=========> Bổ sung bài viết <=========]
Code:
Function nt(x:integer):boolean;
Var i:integer;
Begin
if (x=2) or (x=3) then nt:=true
else nt:=false;
i:=2
repeat
if x mod i then exit else inc(i,2);
until i=trunc(sqrt(x));
nt:=N>1;
End;
[=========> Bổ sung bài viết <=========]
Cũng ko cần kiểm tra x=2 or x=3 vấn đúng.Kiẻm tra TH N=1;
Function nt(x:integer):boolean;
Code:
Var i:integer;
Begin
if x=1 then nt:=false;exit;
nt:=false;
i:=2
repeat
if x mod i then exit else inc(i,2);
until i=trunc(sqrt(x));
nt:=true;
End;
Bookmarks