社区讨论

奇怪的编译错误

学术版参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@ltjtcnph
此快照首次捕获于
2024/03/09 16:18
2 年前
此快照最后确认于
2024/03/09 18:12
2 年前
查看原帖
版本 MinGW 13.2.0
CPP
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstring>

using namespace std;

void shai(int);

bool b[1000002];
vector<int> pr;
vector<int> pri;
bool isp[114514];
int l,u;
int minn,maxn;

int main(){
	shai(50000);
	while(cin>>l>>u){
		memset(b,1,sizeof(b));
		pri.clear();
		for(auto &i:pr){
			for(int j=(l+i-1)/i*i;j<=u;j+=i)
				if(i!=j)
					b[i-l]=0;
		}
		for(int i=l;i<=u;++i){
			if(b[i-l])
				pri.push_back(i);
		}
		if(pri.size()<2){
			cout<<"There are no adjacent primes.\n";
			continue;
		}
		minn=0x7fffffff,maxn=0;
		for(int i=1;i<=pri.size();++i){
			minn=min(minn,pri[i]-pri[i-1]);
			maxn=max(maxn,pri[i]-pri[i-1]);
		}
		for(int i=1;i<=pri.size();++i){
			if(pri[i]-pri[i-1]==minn){
				cout<<pri[i-1]<<','<<pri[i]<<" are closest, ";
				break;
			}
		}
		for(int i=1;i<=pri.size();++i){
			if(pri[i]-pri[i-1]==maxn){
				cout<<pri[i-1]<<','<<pri[i]<<" are most distant.\n";
				break;
			}
		}
	}
	return 0;
}

void shai(int n){
	for(int i=2;i<=n;++i){
		if(!isp[i])
			pr.push_back(i);
		for(auto &pri_j:pr){
			if(i*pri_j>n)
				break;
			isp[i*pri_j]=1;
			if(i%pri_j==0)
				break;
		}
	}
}

编译产生 ld returned 1 exit status 的错误。
可是我并没有没关掉的任务啊。
有没有大佬能解释一下。

回复

8 条回复,欢迎继续交流。

正在加载回复...