LÝ THUYẾT SỐ NGUYÊN TỐ

PRIME01 - Phân loại số

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho N số nguyên không âm a1, a2, ..., aN.
Với mỗi số, hãy phân loại nó thuộc một trong ba loại:

  • PRIME: số nguyên tố;
  • COMPOSITE: hợp số;
  • NEITHER: không phải số nguyên tố cũng không phải hợp số.

Lưu ý: 01NEITHER.

Dữ liệu vào

  • Dòng 1 chứa số nguyên N.
  • Dòng 2 chứa N số nguyên a1, a2, ..., aN.

Dữ liệu ra

In ra N dòng, dòng thứ i là kết quả phân loại của ai.

Ràng buộc

  • 1 ≤ N ≤ 100
  • 0 ≤ ai ≤ 10^6

Subtask

Sub Điểm Ràng buộc
1 40% N ≤ 10, ai ≤ 100
2 60% N ≤ 100, ai ≤ 10^6

Ví dụ

Input
5
0 1 2 4 17
Output
NEITHER
NEITHER
PRIME
COMPOSITE
PRIME

PRIME02 - Kiểm tra số nguyên tố

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho một số nguyên dương n.
Hãy kiểm tra n có phải là số nguyên tố hay không.

Dữ liệu vào

Một dòng chứa số nguyên dương n.

Dữ liệu ra

  • In YES nếu n là số nguyên tố.
  • In NO nếu n không phải số nguyên tố.

Ràng buộc

  • 1 ≤ n ≤ 10^9

Subtask

Sub Điểm Ràng buộc
1 30% n ≤ 100
2 30% n ≤ 10^6
3 40% n ≤ 10^9

Ví dụ

Input
29
Output
YES

PRIME03 - Kiểm tra nhiều số lớn

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho Q truy vấn, mỗi truy vấn gồm một số nguyên dương n.
Với mỗi truy vấn, hãy kiểm tra n có phải số nguyên tố hay không.

Bài này yêu cầu thuật toán kiểm tra tối ưu đến √n.

Dữ liệu vào

  • Dòng 1 chứa số nguyên Q.
  • Q dòng tiếp theo, mỗi dòng chứa một số nguyên dương n.

Dữ liệu ra

In ra Q dòng, mỗi dòng là:

  • YES nếu n là số nguyên tố;
  • NO nếu n không phải số nguyên tố.

Ràng buộc

  • 1 ≤ Q ≤ 100
  • 1 ≤ n ≤ 10^12

Subtask

Sub Điểm Ràng buộc
1 30% Q ≤ 10, n ≤ 10^6
2 30% Q ≤ 50, n ≤ 10^9
3 40% Q ≤ 100, n ≤ 10^12

Ví dụ

Input
4
2
10
999983
1000000
Output
YES
NO
YES
NO

PRIME04 - Liệt kê số nguyên tố bằng sàng

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho số nguyên dương N.
Hãy in ra tất cả các số nguyên tố không vượt quá N theo thứ tự tăng dần.

Dữ liệu vào

Một dòng chứa số nguyên dương N.

Dữ liệu ra

In ra các số nguyên tố không vượt quá N trên một dòng, các số cách nhau một dấu cách.
Nếu không có số nguyên tố nào, in ra dòng trống.

Ràng buộc

  • 1 ≤ N ≤ 10^6

Subtask

Sub Điểm Ràng buộc
1 30% N ≤ 100
2 30% N ≤ 10^4
3 40% N ≤ 10^6

Ví dụ

Input
20
Output
2 3 5 7 11 13 17 19

PRIME05 - Đếm số nguyên tố trong đoạn

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho Q truy vấn. Mỗi truy vấn gồm hai số nguyên L, R.
Với mỗi truy vấn, hãy đếm số lượng số nguyên tố trong đoạn [L, R].

Bài này gợi ý dùng sàng Eratosthenes kết hợp mảng cộng dồn số nguyên tố.

Dữ liệu vào

  • Dòng 1 chứa số nguyên Q.
  • Q dòng tiếp theo, mỗi dòng chứa hai số nguyên L R.

Dữ liệu ra

In ra Q dòng, dòng thứ i là số lượng số nguyên tố trong đoạn [L, R] của truy vấn thứ i.

Ràng buộc

  • 1 ≤ Q ≤ 100000
  • 1 ≤ L ≤ R ≤ 10^6

Subtask

Sub Điểm Ràng buộc
1 30% Q ≤ 100, R ≤ 1000
2 30% Q ≤ 10000, R ≤ 10^5
3 40% Q ≤ 100000, R ≤ 10^6

Ví dụ

Input
3
1 10
10 30
90 100
Output
4
6
1

PRIME06 - Phân tích thừa số nguyên tố

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho số nguyên dương n.
Hãy phân tích n thành tích các thừa số nguyên tố.

Dữ liệu vào

Một dòng chứa số nguyên dương n.

Dữ liệu ra

  • Dòng đầu in số lượng thừa số nguyên tố khác nhau.
  • Các dòng tiếp theo, mỗi dòng in hai số p e, nghĩa là thừa số nguyên tố p xuất hiện với số mũ e.
  • Các thừa số được in theo thứ tự tăng dần.
  • Nếu n = 1, chỉ in 0.

Ràng buộc

  • 1 ≤ n ≤ 10^12

Subtask

Sub Điểm Ràng buộc
1 30% n ≤ 10^6
2 30% n ≤ 10^9
3 40% n ≤ 10^12

Ví dụ

Input
60
Output
3
2 2
3 1
5 1

PRIME07 - ƯCLN và BCNN bằng phân tích nguyên tố

Giới hạn

  • Thời gian: 1 giây
  • Bộ nhớ: 256 MB

Đề bài

Cho hai số nguyên dương AB.
Hãy tính ƯCLN(A, B)BCNN(A, B).

Bài toán có thể giải bằng thuật toán Euclid, nhưng trong chủ đề số nguyên tố, ta có thể phân tích A, B thành thừa số nguyên tố rồi lấy:

  • ƯCLN: lấy số mũ nhỏ nhất của từng thừa số chung;
  • BCNN: lấy số mũ lớn nhất của từng thừa số xuất hiện.

Dữ liệu vào

Một dòng chứa hai số nguyên dương A B.

Dữ liệu ra

In ra hai số:

UCLN BCNN

Ràng buộc

  • 1 ≤ A, B ≤ 10^9
  • BCNN(A, B) ≤ 10^18

Subtask

Sub Điểm Ràng buộc
1 30% A, B ≤ 1000
2 30% A, B ≤ 10^6
3 40% A, B ≤ 10^9

Ví dụ

Input
60 84
Output
12 420