1、先打印素数表,复杂度O(10^5), 全部打印出来
2、 对于区间 [a, b], 用大于等于p的素数 prime[i] 去扫描,
能被 prime[i] 整除的 数合并为一个集合
3、最后统计一共有多少个集合即可
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const int MaxN = 100010;
int prime[MaxN], m;
bool v[MaxN];
int fa[MaxN];
void init_prime()
{
int n = MaxN - 1;
for(int i = 2; i <= n; ++i)
{
if