You are on page 1of 17

I.

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:

UCLN(a,b) * BCNN(a,b) = a*b

 Tìm UCLN rồi áp dụng công thức trên suy ra BCNN


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:

UCLN(a,b) * BCNN(a,b) = a*b

 Tìm UCLN rồi áp dụng công thức trên suy ra BCNN

* Chú ý: Hai số tự nhiên gọi là nguyên tố cùng nhau khi


chúng có UCLN bằng 1
II. Ước số - Bội số
3. Một số dạng bài tập:
- Đếm số các ước số
- Tính tổng các ước số
- Phân tích ra thành thừa số nguyên tố
- …
III. Xử lý các chữ số
 Bài toán:
Cho số tự nhiên N. Yêu cầu:
a) Đếm số chữ số của N
b) Tính tổng các chữ số của N
c) Tìm chữ số đầu tiên của N
d) Tìm số đảo ngược các chữ số của N
 Hai phép toán cơ bản: DIV và MOD
a := N mod 10;  lấy chữ số tận cùng của N
N := N div 10;  Xóa bỏ chữ số tận cùng của N
III. Xử lý các chữ số
A:=N mod 10; N:=N div 10; Đếm Tổng Đảo
271958 0 0 0
8 27195 1 8 8
5 2719 2 13 85
9 271 3 22 859
1 27 4 23 8591
7 2 5 30 85917
2 0 6 32 859172
Dem:=0;
Tong:=0;
Dao:=0;
Repeat
a := N mod 10;
Dem := Dem + 1;
Tong:= Tong + a;
Dao := Dao * 10 + a
N:=N div 10;
Until N=0;
Writeln('So chu so = ' , Dem);
Writeln('Tong chu so = ' , Tong);
Writeln('Chu so dau tien = ' , a);
Writeln('So dao nguoc lai = ' , Dao);
III. Xử lý các chữ số
 Một số bài toán tương tự:
- Xóa chữ số tận cùng bên trái của N
- Đổi chỗ chữ số đầu và chữ số cuối của N
- Xóa khỏi N tất cả các chữ số 0 và 5
- Tìm chữ số tận cùng của 2N
-…
IV. Một số bài toán khác
1. Số hạnh phúc là số có 2N chữ số sao cho tổng N chữ số
đầu bằng tổng N chữ số cuối. Tìm các số hạnh phúc có
2N chữ số (1N4).
2. Số Palindrom là số mà khi viết các chữ số theo thứ tự
ngược lại thì số tạo thành cũng chính bằng số ban đầu.
Tìm các số Palindrom có K chữ số (1K9)
3. Số hoàn hảo là số có giá trị bằng tổng các ước số của nó
(không kể ước số là chính nó). Tìm các số hoàn hảo
trong đoạn [a,b] với 1ab108
4. Hai số gọi là đôi bạn nếu tổng các ước số của số này
bằng số kia và ngược lại. Tìm các cặp số là đôi bạn trong
đoạn [a,b]
IV. Một số bài toán khác
5. …

You might also like