大佬教程收集整理的这篇文章主要介绍了矢量分割错误,但不确定我做错了什么,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以当我运行这段代码时:
#include <iostream>
using namespace std;
#include <vector>
#include <String>
int main()
{
int current_number = 0;
vector<int>primes;
for(int i = 0; i < 100; i++)
{
current_number++;
for(int h= 0; h < primes.size(); h++)
{
if(current_number % primes[h] == 0)
{
conTinue;
}
else
{
primes.push_BACk(current_number);
}
}
}
for(int x =0; x < 100; x++)
{
cout << primes[x];
}
}
我遇到了分段错误。我很确定它与矢量素数有关。但是,我不确定到底是什么。该代码的目的是找出 1 到 100 之间的每个素数。
在发布的代码中存在的问题。
primes
最初是空的,唯一改变它的代码是在该循环中。{2}
修复初始素数内容并用 3
启动计数器循环后,内循环中的逻辑仍然是错误的。它附加在非零模上。这不应该在内部循环中 完成。相反,循环应该在任何零模处中断,然后外循环仅在知道内循环没有提前中断时才附加到 primes
。
current_number
毫无意义;只需使用外循环中的 i
并从 3
开始。#include <iostream>
#include <vector>
int main()
{
std::vector<int> primes = {2};
for (int i = 3; i <= 100; i++)
{
bool isprime = true;
for (auto x : primes)
{
if (i % x == 0)
{
isprime = false;
break;
}
}
if (isprimE)
primes.emplace_BACk(i);
}
for (auto x : primes)
std::cout << x << ' ';
std::cout << '\n';
}
输出
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
注意
有更好的方法来做到这一点。我建议您研究如何构建 Sieve of Eratosthenes 或类似的筛子。事实上,上面的代码已经完成了一半。不需要花太多时间去做。
以上是大佬教程为你收集整理的矢量分割错误,但不确定我做错了什么全部内容,希望文章能够帮你解决矢量分割错误,但不确定我做错了什么所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。