Professional Documents
Culture Documents
Bai Giang Chuyen de 2 So Hoc Cua Thay Luu Quang Liem
Bai Giang Chuyen de 2 So Hoc Cua Thay Luu Quang Liem
Số nguyên tố
Một số tự nhiên N (N>1) là số nguyên tố nếu N có đúng
hai ước số là 1 và N (tức là không có ước số nào trong
đoạn [2, N-1].
Tính chất: Nếu N không có ước nào trong đoạn [2, N ] thì
N cũng không có ước nào trong đoạn [ N ,N-1] , suy ra N
là số nguyên tố
Kiểm tra số nguyên tố: Ta chỉ cần kiểm tra xem N có ước
trong đoạn [2, N] hay không
I. Số nguyên tố
If N<2 then Writeln(N, ' khong la so nguyen to')
Else
Begin
i:=2;
While (i<=sqrt(N)) and (N mod i<>0) do i:=i+1;
If i>sqrt(N) then Writeln(N, ' la so nguyen to')
Else Writeln(N, ' khong la so nguyen to');
End;
I. Số nguyên tố
Bài toán: Liệt kê các số nguyên tố trong đoạn [1,N]
Cách 1: Thử lần lượt các số M trong đoạn [1,N] rồi kiểm
tra tính nguyên tố của M
For M:=2 to N do
Begin
i:=2;
While (i<=sqrt(M)) and (M mod i<>0) do i:=i+1;
If i>sqrt(M) then Writeln(M)
End;
I. Số nguyên tố
Cách 2: Sử dụng phương pháp sàng Eratosthene
Trước tiên xóa bỏ số 1 ra khỏi tập các số nguyên tố. Số
tiếp theo số 1 là số 2 chính là số nguyên tố, xóa tất cả
các bội của 2 ra khỏi bảng.
Số đầu tiên không bị xóa sau số 2 sẽ là số nguyên tố
tiếp theo (số 3), xóa các bội của 3…
Quá trình tiếp tục đến khi gặp số nguyên tố lớn hơn
sqrt(N) thì dừng. Tất cả các số chưa bị xóa là số nguyên
tố.
I. Số nguyên tố
Cách 2: Sử dụng phương pháp sàng Eratosthene
Const max=100000;
Var P:Array[1..max] of byte;
i,j,N:Longint;
Begin
Write('Nhap so tu nhien N =');
Readln(N);
Fillchar(P,Sizeof(P),0);
For i:=2 to trunc(sqrt(N)) do
If P[i]=0 then
Begin
j:=i*i;
While j<=N do
Begin
P[j]:=1;
j:=j+i;
End;
End;
For i:=2 to N do
If P[i]=0 then Writeln(i);
End.
II. Ước số - Bội số
1. Ước số chung lớn nhất của hai số
Thuật toán Euclid:
a nếu b = 0
UCLN(a,b) =
UCLN(b, a mod b) nếu b<>0
While b>0 do
Begin
r := a mod b;
a := b;
b := r;
End;
II. Ước số - Bội số
2. Bội số chung nhỏ nhất của hai số
Áp dụng công thức: