Thứ Năm, 30 tháng 3, 2017

SỐ NGUYÊN TỐ

Cho dãy số nguyên x1, x2, …, xN và hàm f(p) là số lượng các phần tử thuộc dãy x chia hết cho p.
Cho M truy vấn, mỗi truy vấn cho hai số nguyên li, ri. Bạn phải trả lời câu hỏi: Tính tổng:
 , ở đây S(li, ri) là tập các số nguyên tố thuộc đoạn [li,ri].
INPUT:
·         Dòng đầu tiên chứa giá trị N (1 ≤ N ≤ 106)
·         Dòng hai chứa N số nguyên x1, x2, …, xN (2 ≤ xi ≤ 105)
·         Dòng ba chứa giá trị M (1 ≤ M ≤ 5*104)
·         M dòng tiếp theo, mỗi dòng chứa hai số li, ri (2 ≤ li ≤ ri ≤ 2*109)
OUTPUT:
·         Gồm M dòng, mỗi dòng là câu trả lời của truy vấn tương ứng của INPUT.
Ví dụ:
PRIME.INP
PRIME.OUT
6
5 5 7 10 14 15
3
2 11
3 12
4 4
9
7
0
Giải thích:
·         Tại truy vấn 1: l = 2, r = 11:
Ta cần tính f(2) + f(3) + f(5) + f(7) + f(11) = 2 + 1 + 4 + 2 + 0 = 9.
·         Tại truy vấn 2: l = 3, r = 12:
Ta cần tính f(3) + f(5) + f(7) + f(11) = 1 + 4 + 2 + 0 = 7
·         Tại truy vấn 3: l = 4, r = 4: không có số nguyên tố nào thuộc đoạn [l,r], nên kết quả truy vấn bằng 0
* Chú ý:
·         40% test 1 ≤ N, M ≤ 100; 1 ≤ li ≤ ri ≤ 1000
·         40% test tiếp theo 1 ≤ N, M ≤ 1000; 1 ≤ li ≤ ri ≤ 1000
·         20% test còn lại 1 ≤ N ≤ 106, 2 ≤ xi ≤ 105, 1 ≤ M ≤ 5*104, 2 ≤ li ≤ ri ≤ 2*109