CF385C Bear and Prime Numbers

题目描述

最近,小熊开始学习数据结构,遇到了如下问题。 给定一个长度为 $n$ 的整数序列 $x_1, x_2, ..., x_n$,以及 $m$ 个查询,每个查询由两个整数 $l_i, r_i$ 描述。令 $f(p)$ 表示满足 $x_k$ 能被 $p$ 整除的下标 $k$ 的个数。对于每个查询 $l_i, r_i$,需要计算如下和: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF385C/835eb9f4aebf62a9178a923ec511d1ceb493d06f.png),其中 $S(l_i, r_i)$ 表示区间 $[l_i, r_i]$(包含区间两端)中的所有质数构成的集合。 请帮助小熊解决这个问题。

输入格式

第一行包含一个整数 $n$,满足 $1 \le n \le 10^6$。 第二行包含 $n$ 个整数 $x_1, x_2, ..., x_n$,满足 $2 \le x_i \le 10^7$。这些数不一定互不相同。 第三行包含一个整数 $m$,满足 $1 \le m \le 50000$。接下来的 $m$ 行中,每行包含一对用空格分隔的整数 $l_i$ 和 $r_i$,满足 $2 \le l_i \le r_i \le 2 \cdot 10^9$,表示一个查询。

输出格式

输出 $m$ 个整数,依次为每个查询的答案。

说明/提示

以第一个样例为例。总体上,该样例有 3 个查询。 1. 第一个查询 $l=2$,$r=11$,需要计算 $f(2)+f(3)+f(5)+f(7)+f(11)=2+1+4+2+0=9$。 2. 第二个查询 $l=3$,$r=12$,需要计算 $f(3)+f(5)+f(7)+f(11)=1+4+2+0=7$。 3. 第三个查询 $l=4$,$r=4$,由于该区间没有质数,因此答案为 $0$。 由 ChatGPT 5 翻译