SP13015 CNTPRIME - Counting Primes

题目描述

给你一个 $n$ 个数的数组和 $m$ 个操作: - $0\ x\ y\ v$ 将 $x$ 到 $y$ 之间的所有数改成 $v$。 - $1\ x\ y$ 求 $x$ 到 $y$ 之间的质数个数。 数组下标为 $1$ 到 $n$。

输入格式

第一行是一个整数 $T$,表示数据组数。 每组数据包含两个整数 $n$,$q$。 下一行是 $n$ 个整数表示数组 $a_i$。接下来的 $q$ 行,每行包含一个操作。形如: - $0\ x\ y\ v$ - $1\ x\ y$ $1 \le n \le {10}^4$,$1 \le q \le 2 \times {10}^4$,$2 \le x,y,v,a_i \le 10^6$

输出格式

对于每组数据,先输出数据编号。然后对于每一个 $1\ x\ y$ 的询问,输出 $x$ 到 $y$ 之间的质数个数。

说明/提示

- 使用较快的输入输出方式,如 `scanf` 和 `printf`。 - 一个质数是一个除了 $1$ 和它本身意外没有其他正因数的大于 $1$ 的自然数。前几个质数是 $2,3,5,7,11...$