我正在寻找600851475143的最大素数。
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
bool isPrime(long long int number) {
if (number < 2)
return false;
if (number > 2 && (number % 2) == 0)
return false;
for (long long int i = 2; i < number; i++)
{
if ((number % i) == 0)
{
return false;
}
}
return true;
}
int main()
{
vector<long long int> myVectorOfPrimes;
myVectorOfPrimes.push_back(1);
myVectorOfPrimes.push_back(0);
for(long long i = 2; i < 600851475143; i++) {
if (isPrime(i)) {
myVectorOfPrimes.push_back(i);
}
}
auto value = max_element(myVectorOfPrimes.cbegin(), myVectorOfPrimes.cend());
cout << value;
}
我希望max_element函数能够在myVectorOfPrimes中找到最大的素数,找到其数据类型,然后将其删除。相反,我得到错误E0349:没有运算符“ <<”与这些操作数匹配,并且错误:C2679二进制'<<':找不到使用类型为'_FwdIt'的右侧运算数的运算符(或者没有可接受的转换) )
答案 0 :(得分:3)
std::max_element
函数将迭代器返回给max元素。您必须写:
cout << *value;
(您可能需要更改变量的名称。)
您还可以通过从max_element
返回的迭代器中减去begin迭代器来获取max元素的索引。