奇怪的编译错误
  • 板块学术版
  • 楼主44_FeiDing
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/3/9 16:17
  • 上次更新2024/3/9 18:12:34
查看原帖
奇怪的编译错误
876232
44_FeiDing楼主2024/3/9 16:17

版本 MinGW 13.2.0

#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 的错误。

可是我并没有没关掉的任务啊。

有没有大佬能解释一下。

2024/3/9 16:17
加载中...