为什么这样写会错?
查看原帖
为什么这样写会错?
264548
Tangent233楼主2021/1/17 12:05
#include<bits/stdc++.h>
using namespace std;
bool isp[50010];
vector <int> prime;
void aioutelanisishai(int n)
{
    memset(isp,1,sizeof(isp));
    isp[1]=0;
    for(int i=2;i*i<=n;i++)
        if(isp[i])
        {
            prime.push_back(i);
            for(int k=2;k*i<=n;k++)
                isp[i*k]=0;
        }
}
int qisp[1000010];//代表从l往后数的第i个数
int main()
{
    aioutelanisishai(50000);
    int l,r;cin>>l>>r;
    memset(qisp,0,sizeof(qisp));
    for(int i=0;i<prime.size();i++)
    {
        for(int j=max(2,(l-1)/prime[i]+1)*prime[i];j<=r;j+=prime[i])
                if(j-l>=0) qisp[j-l]=1;
    }
    int ans=0;
    for(int i=0;i<=r-l;i++) ans+=(!qisp[i]);
    cout<<ans;
    return 0;
}

2021/1/17 12:05
加载中...