我正在尝试创建一个函数来获取间隙内的第一对素数。
我首先创建一个
vector
并将其大小设置为“m”和“n”之间的差值。
但是,我一直遇到这个问题。向量的第一个元素始终是
0
,而它应该是(在本示例中)3
(以及最后一个数字 7
)。
//declare variables
int gap = g;// 0 for now
int lowLimit = m;//3
int highLimit = n;//7
//vector with all the numbers
vector<int>nums(n - m);
//fill nums with all he numbers between n & m inclusive
int numsToSearch = n - m;
for (int i = m; i <= n; ++i) {
nums.push_back(i);
std::cout << "first for: " << nums.at(i) << '\n';
}
您最初使用
vector
(4) 个零构建 n-m
,然后将 m-n+1
(5) 个更多的数字推入零之后的 vector
。
您需要:
vector::operator[]
代替 vector::push_back()
:vector<int> nums(n - m + 1);
for (int i = m, j = 0; i <= n; ++i, ++j) {
nums[j] = i;
}
vector::reserve()
代替:vector<int> nums;
nums.reserve(n - m + 1);
for (int i = m; i <= n; ++i) {
nums.push_back(i);
}