无平方因子数

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

题目:

给出正整数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%(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值