【发布时间】:2015-12-20 22:38:48
【问题描述】:
我想做一个 Eratosthenes 的筛子,这是我在prime 函数中做的,但问题是我想使用一个向量,或者类似的东西来存储这个值以备后用在代码上使用,剩下的就是二分查找了,但是我不知道vector的引用怎么用,我在java上做过,但是那里的引用很简单。
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
int *primes (int size)
{
int* primArray = new int(size);
int notPrime[size];
for (int i = 0; i < size; i++)
notPrime[i]=0;
int cont = 0;
for(int i = 2; i < size; i++)
{
if(notPrime[i] == 0)
{
primArray[cont] = i;
cont++;
int sum = i;
for(int j = 1; sum < size; j++)
{
notPrime[sum] = 1;
sum = j*i;
}
}
}
return primArray;
}
这里的问题
int search(int input, vector<int> array)
{
int min = 0;
int max = array.size() - 1;
int guess = (min + max)/2;
int output = -1;
while (true)
{
if (array[guess] == input)
{
output = guess;
break;
}
if (min > max)
{
output = -1;
break;
}
if (array[guess] < input)
min = guess + 1;
else
max = guess - 1;
guess = (min + max)/2;
}
return output;
}
int main()
{
scanf("%d", &input);
//int* array = primes(200);
/*for (int i = 0; i < 200; i++)
{
printf("%d, ", array[i]);
}*/
int numbers[] = {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, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199};
vector<int> primeArray (numbers, numbers + sizeof(numbers) / sizeof(*numbers));
for (int i = 0; i < primeArray.size(); i++)
{
printf("%d, ", primeArray[i]);
}
cout<< "\n";
printf("%d", search(input, primeArray));
}
【问题讨论】:
-
您遇到了什么问题?
标签: c++ vector reference primes