题目:
给出正整数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%(prim[i]*prim[i])==0)
return 0;
return 1;
}
int main()
{
int n,m;
long long sum;
while(scanf("%d%d",&n

该博客探讨了如何计算在给定区间[n, m]内,不含平方因子的正整数个数。问题中指出,如果一个整数p没有平方因子,则不存在k大于1,使得p可以表示为k * k的倍数。题目给出的限制条件是1 <= n <= m <= 10^12,并且m - n <= 10^7。"
109697464,5268177,MyBatis的SqlSession:多参数select方法与RowBounds详解,"['MyBatis框架', '数据库操作', '结果映射', '源码解析']
最低0.47元/天 解锁文章
4906

被折叠的 条评论
为什么被折叠?



