You are on page 1of 12

Mathematics is the queen of the sciences—and number theory is the queen of

mathematics.
(Hoàng tử toán học - Carl Friedrich Gauss).

Hàm, Lý Thuyết Số, Tổ Hợp


1.Kiểm tra số nguyên tố.........................................................................................1
2.Phân tích thừa số nguyên tố................................................................................1
3. Đếm ước, tính tổng ước.....................................................................................2
4.Số chính phương.................................................................................................3
5. Số hoàn hảo........................................................................................................3
6. Số fibonacci........................................................................................................4
7. Sàng số nguyên tố..............................................................................................6
8. Phi hàm Euler.....................................................................................................7
9.Giai thừa..............................................................................................................9
10. Ước chung lớn nhất, bội chung nhỏ nhất.........................................................9
11. Hai số nguyên tố cùng nhau...........................................................................10
12. Số thuận nghịch..............................................................................................10
13.Tổ hợp chập K của N......................................................................................11

1
1.Kiểm tra số nguyên tố
Độ phức tạp O(logN).

2.Phân tích thừa số nguyên tố


Phương pháp : trial division method
Độ phức tạp O(logN)
Input
120
Output
22235

Fact :

2
Tức là từ phân tích thừa số nguyên tố của 1 số ta có thể tính được các số ước của nó
thông qua quy tắc nhân, ta chỉ cần lấy các số mũ của từng thừa số nguyên tố + 1 rồi
nhân với nhau.
Ví dụ
N = 120 = 2^3 * 3^1 * 5^1
Nên T(n) = (3 + 1) * (1 + 1) * (1 + 1) = 16 ước
3. Đếm ước, tính tổng ước
Độ phức tạp O(logN)

4.Số chính phương


Độ phức tạp : O(logN)

3
5. Số hoàn hảo
Số hoàn hảo là số có tổng các ước thực sự của nó bằng chính nó. Ví dụ 28 = 1 + 2 +
4 + 7 + 14.
Cách 1 : Kiểm tra khi N nhỏ
Độ phức tạp O(logN)

Cách 2 : Dựa trên định lý Euclid-Euler : Nếu p là số nguyên tố và 2^p - 1 cũng là


số nguyên tố thì 2^(p-1) * (2^p - 1) sẽ tạo thành 1 số chính phương.
Ví dụ p = 2, 2^2 - 1 = 3 cũng là số nguyên tố nên 2^(2-1) * (2 ^2 - 1) = 2 * 3 = 6 là
1 số hoàn hảo.
Bạn có thể kiểm tra tương tự với p = 3 sẽ tạo ra số hoàn hảo là 28
Vậy giả sử cần check số N là số long long (~2^64) thì cần duyệt p tới bao nhiêu là
đủ ?
Fact : Trong giới hạn số long long chỉ có 8 số hoàn hảo là :
6 28 496 8128 33550336 8589869056 137438691328 2305843008139952128

4
6. Số fibonacci
In ra N số Fibonacci đầu tiên
Phương pháp : Quy hoạch động, lưu các số Fibonacci vào mảng.
Fact : Ở giới hạn số long long chỉ lưu được tới số Fibonacci thứ 93. Tức là số
Fibonacci thứ 4 đã ngoài khoảng lưu của long long.
Độ phức tạp O(N).

Vậy để kiểm tra số N có phải là số Fibonacci hay không chỉ cần sinh ra sẵn 93 số
Fibonacci đầu tiên và lưu vào mảng, khi cần kiểm tra ta duyệt mảng đã lưu này và
kiểm tra.

5
Trong trường hợp khi tính số Fibonacci lớn, ví dụ số Fibo thứ 10^6, vì quá lớn nên
thường đầu bài sẽ yêu cầu in ra kết quả số Fibo này sau khi chia dư cho 10^9 + 7.
Phương pháp : Dùng bảng phương án lớn hơn, trong quá trình tính toán nhớ chia dư
để tránh bị tràn số, không tính xong mới chia dư

7. Sàng số nguyên tố
Phù hợp với các bài toán cần kiểm tra đi kiểm tra lại các số nguyên tố trong 1
khoảng nào đó. Hoặc các bài toán kiểm tra số nguyên tố có nhiều test case.

6
Không sử dụng sàng số nguyên tố chỉ để kiểm tra 1 số có phải là số nguyên tố hay
không !!!!
Độ phức tạp : O(Nlog(logN)
Sàng các số nguyên tố từ 1 tới N
Điều kiện : N ≤ 10^7.

Code ở trên sàng tới 10^7, thông thường các bạn chỉ sàng được tới 10^7, vì cần 1
mảng có cỡ 10^7 + 1 phần tử. Không thể khai báo mảng quá lớn sẽ bị tràn bộ nhớ.
Nên nếu gặp bài kiểm tra số nguyên tố quá lớn thì không thể dùng sàng.

Sàng các số trong đoạn từ [L, R]


Điều kiện : R - L ≤ 10^7

7
8. Phi hàm Euler
Phi hàm Euler : Số các số nguyên từ 1 tới N mà nguyên tố cùng nhau với N
Ví dụ : N = 6, có các số 1, 5 nguyên tố cùng nhau với 6, nên phi(6) = 2
Công thức :

Giải thích : p|n có nghĩa là n chia hết cho p và p là số nguyên tố


Vậy p trong công thức trên chính là các thừa số nguyên tố trong phân tích thừa số
nguyên tố của n
Ví dụ N = 120 = 2^3 * 3^1 * 5^1
Nên phi(120) = 120 * ( 1 - 1/2) * (1 - 1/3) * (1 - 1/5) = 32
Chú ý : Không quan tâm tới số mũ của thừa số nguyên tố, mỗi thừa số nguyên tố
chỉ tính 1 lần

8
Fact : Nếu p là số nguyên tố thì phi(p) = p - 1 ???
Phát hiện của Gauss :

Ý nghĩa là : Tổng tất cả các phi hàm euler của ước số của N sẽ bằng N
Ví dụ N = 8 thì phi(1) + phi(2) + phi(4) + phi(8) = 1 + 2 + 2 + 3 = 8

9.Giai thừa
Khi tính giai thừa họ thường không yêu cầu tính với số quá lớn. Nếu N lớn thì
thường yêu cầu chia dư cho 1e9 + 7
Độ phức tạp : O(n)
Chú ý : 0! = 1

9
10. Ước chung lớn nhất, bội chung nhỏ nhất
Độ phức tạp : O(logN)
GCD : Greatest common divisor : UCLN
LCM : Least common multiple : BCNN

Chú ý có thể dùng hàm có sẵn __gcd(a, b), không code hàm tìm GCD bằng cách
trừ dần => TLE

10
11. Hai số nguyên tố cùng nhau
Hai số nguyên tố cùng nhau nếu ước chung của nó = 1, chứ không phải là 2 số đều
là số nguyên tố.

12. Số thuận nghịch


O(len(N) : Số vòng lặp bằng số lượng chữ số của N

13.Tổ hợp chập K của N


Tổ hợp chập K của N kí hiệu là C(k,n) là lời giải cho bài toán : Có bao nhiêu cách
chọn K phần tử không xét đến thứ tự từ N phần tử. Hoặc có N phần tử, có bao

11
nhiêu cách chia N phần tử này thành 2 tập, tập 1 có K phần tử và tập 2 có N-K phần
tử.

Cách 1 dùng trực tiếp công thức, cách 2 dùng công thức Pascal.

12

You might also like