题目:
给出正整数n和m,区间[n,m]内的“无平方因子”的数有多少个?整数p无平方因子当且仅当不存在k > 1,使得p是k * k的倍数。1 <= n <= m <= 10 ^ 12,m - n <= 10 ^ 7
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <cstring>
using namespace std;
const int maxn=100005; //求出根下m内的质数即可
int p[maxn];
int prim[maxn];
int len=0;
void zhishu(int m) //找出根下m以内的质数
{
memset(p,0,sizeof(p));
int k=sqrt(m+0.5);
p[1]=1;
for(int i=2; i<=k; i++)
{
if(!p[i])
for(int j=i*i; j<=m; j+=i)
p[j]=1;
}
len=0;
for(int i=1; i<=m; i++)
{
if(!p[i])
prim[len++]=i;
}
}
int pd(int num) //判断这个数是否是平方因子
{
for(int i=0; i<len; i++)
if(num%(