所以我一直在尝试编写程序来生成第一个,101个,201st个素数,直到10^8。我使用了ios_base,因此输出发生了变化,
vector<int> primes;
int maxx = 100000000;
int arr[100000000];
void sieve(){
arr[0] = 1;
arr[1] = 1;
arr[2] = 0;
primes.push_back(2);
for(int i = 3;i < maxx; i+=2){
if(arr[i]==0){
primes.push_back(i);
if(i*(ll)i < (ll)maxx){
for(int j = i*i; j < maxx; j+=2*i){
arr[j] = 1;
}
}
}
}
}
int main()
{
sieve();
int i = 0, s= primes.size();
while(i < s) {
printf("%d\n", prime[i]);
i += 100;
}
return 0;
}这给出了正确的答案,并且解决方案被接受,但是如果我添加
ios_base::sync_with_stdio(false);
cin.tie(NULL);生成的行不多,答案是错误的。为什么会发生这种情况?我到处找,但人们只说它能让程序更快,仅此而已。
发布于 2021-08-22 11:52:39
只有当有多个测试用例时,"ios_base::sync_with_stdio(false);cin.tie(NULL);“才会使输出更快。另外,我猜你没有接受任何输入。所以使用cin.tie(NULL)可能不是最好的主意。
https://stackoverflow.com/questions/68880398
复制相似问题