2401_83163654 2024-05-08 00:21 采纳率: 100%
浏览 3
已结题

素数密度,求范围内素数个数,我的埃氏筛不能全过,为什么请修改


#include<bits/stdc++.h>
using namespace std;

const int maxn = 5e6;
bool isprime[maxn + 1];

int sieve(long long int a, long long int b) {
    memset(isprime, true, sizeof isprime);
    isprime[0] = isprime[1] = false;
    for (int i = 2; i <= b; i++) {
        if (isprime[i]) {
            for (int j = i * 2; j <= b; j += i) {
                isprime[j] = false;
            }
        }
    }
    int cnt = 0;
    for (int i = a; i <= b; i++) {
        if (isprime[i]) cnt++;
    }
    return cnt;
}

int main() {
    long long int l, r;
    cin >> l >> r;
    int cnt = sieve(l, r);
    cout << cnt;
    return 0;
}

img

img


素数密度,求范围内素数个数,我的埃氏筛不能全过,为什么请修改

  • 写回答

4条回答 默认 最新

  • 为荣誉而拼搏少年 2024-05-08 05:44
    关注
    #include<bits/stdc++.h>
    using namespace std;
    long long l,r,s;
    bool pd(int x)
    {
        if(x<2)return 0;
        for(int i=2;i*i<=x;i++)if(x%i==0)return 0;
        return 1;
    }
    int main()
    {
        scanf("%lld%lld",&l,&r);
        if(l==2)s++;
        if(l%2==0)l++;
        for(int i=l;i<=r;i+=2)if(pd(i))s++;
        printf("%lld",s);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥18 c语言期中复习题(求解)
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 求一个十多年前的国产符号计算软件(MMP)+用户手册
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
  • ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("