gpt4 book ai didi

c - 给定范围内的素数

转载 作者:行者123 更新时间:2023-11-30 21:04:21 25 4
gpt4 key购买 nike

我必须找到两个数 m 和 n 之间的所有素数。 (1 <= m <= n <= 1000000000 且 n-m <= 100000)。我正在使用埃拉托色尼筛,但得到了错误的答案。谁能帮我看看我的代码有什么问题。

#include<stdio.h>
#include<math.h>

int S[100002];
void sieve(long long int m, long long int n)
{
long long int x=sqrt(n);
long long int i,j;
long long int a;

for(i=0;i<=n-m+2;i++)
S[i]=0;

if(m%2==0)
i=m;

else {
i=m+1;

}

for (;i<=n;i+=2){
S[i-m]=1;

}


for (i=3;i<=x;i+=2){

if(i>=m && S[i-m]) continue;

if(i*i>=m)j=i*i;
else {
a = (m-i*i)%(2*i);
if(a==0)j=m;
else
j=m+ (2*i -a);
}
for (;j<=n;j+=2*i){

S[j-m]=1;
}
}

if (m==1)i=1; else i=0;
for (;i<=n-m;i++)

if (!S[i]){


printf("%lld\n",i+m);
}


}







int main(){
int t;
long long int m,n;
scanf("%d\n",&t);
while(t--){
scanf("%lld %lld",&m,&n);

sieve(m,n);
printf("\n");
}

return(0);





}

最佳答案

if(m%2==0)
i=m;
else {
i=m+1;
}
for (;i<=n;i+=2){
S[i-m]=1;
}

现在,如果 m <= 2 会发生什么? 2 是否会被视为质数?

关于c - 给定范围内的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com