Mấy bác ờ trang 1 hay thật. Lớp 7 đã học căn bậc hai rồi
Mà sao dạo này forum vắng vậy, chả thấy ai
theo minh` de hs cap 2 hieu 1 cach de nhat la`
For i:=1 to so do
If so mod i=0 then d:=d+1;
If d=2 then write('nguyen to') else write('ko nguyen to');
Cach nay` giong' nhu dinh nghia trong sgk nen de hieu hon
nho cac ban lam jup minh bai nay dc ko?
Tim tat ca cac so nguyen to tu 1 den 100.
tim tong tat ca cac so nguyen to tu 1 den 100
y' we^n!
chi dung for to do, while do, va menh de if
!!!!!!!!!!!!!!!!!!
Các PAC "lói " nhiều lời về thuật toán cơ bản này quá!. Mọi sách Tây, Tàu, ta đều định nghĩa số nguyên tố chặt chẽ và đầy đủ như sau: Số nguên tố là số chỉ chia hết cho chính nó và 1; số 1 không phải là số nguyên tố. (Vì vậy hiển nhiên số 2 là số nguyên tố bé nhất trong "làng" các số nguyên tố!). Mình đề xuất một code cho bài toán này chả liên quan gì tới căn bậc hai cả. (chỉ dùng khái niệm chia hết hoặc là ước số như các PAC đã nêu!!). Code này về bản chất cũng chẳng khác của các PAC đâu. Nhưng đây là 1 Program hoàn chỉnh và chắc chắn hs THCS hiểu được
Program Ktra_tinh_nto;
Uses crt;
Var n:Integer;
FUNCTION Ktra_nto(k:integer):Boolean;
Var i:integer;
Begin
If k=1 then Ktra_nto:=False
Else If k=2 then Ktra_nto:=true
Else Begin
Ktra_nto:=true;
For i:=2 to k-1 do
If (k MOD i=0) then Ktra_nto:=False;
End;
End;
{Ch_trinh chinh:}
Begin clrscr;
Writeln(#32:25,'GO SO KHONG DE THOAT.'); WRITELN;
Write('Nhap mot so nguyen duong n='); Readln(n);
While n>0 do
Begin
If Ktra_nto(n) then Writeln(n,' la so nguyen to.')
Else Writeln(n,' khong phai la so nguyen to !');
Write('Nhap mot so nguyen duong n=');
Readln(n);
End;
End.
function Nguyen_To(n:longint):boolean;
begin
if n<2 then
exit(false)
else
for i:=2 to trunc(sqrt(n)) do
if n mod i =0 then
exit(true);
exit(true);
end;
Các bạn làm thường là chia vét cạn từ 2 đến N, hoặc căn N (dùng hàm thư viện) như vậy nếu N cao sẽ rất tốn kém thời gian.
Cách nhanh tốt và đơn giản nhất là dùng sàng Eratosthenes, theo định lí thì các số nguyên tố sẽ không chia hết cho các số nguyên tố đứng trước nó, mà số lượng số nguyên tố thì rất ít nên thuật toán chạy sẽ nhanh hơn. Về kĩ thuật, cứ dò được 1 số nguyên tố nào đó thì cho vô 1 mảng, lúc xét số nguyên tố chỉ cần chia cho các số trong mảng là được.
Bookmarks