我目前正在创建一个在程序开头初始化int Vector的程序。随着程序的进行,Prime数字将被添加到Vector中。然后,程序将检查给定数字%的结果是否为Vector中的第一个数字的结果== 0.如果不是,程序将根据第二个数字检查它。有没有办法在C ++ 11上做到这一点,如果是这样,怎么样?谢谢你的任何时间!
答案 0 :(得分:0)
首先,您需要在向量中推送素数。在开始时,除非您另有要求,否则向量为空。您可以使用此代码段推送素数:
// somewhere you declare your vector
std::vector<unsigned long long> primes;
// code computing a prime number
unsigned long long prime;
....
// Push the new prime number at the end of the vector
primes.push_back(prime);
然后你需要遍历向量中的所有素数。您可以使用for
循环:
for(auto prime : primes) {
. . . // code using the prime number
}
根据评论的建议,您可能希望使用此for
循环来测试数字的素数。您可以使用for
循环轻松完成此操作:
unsigned long long number = ...; // the number to test
bool is_prime = true;
for(auto prime: primes) {
bool is_divisible = (0 == number % prime)
is_prime = is_prime && !is_divisible;
if(! is_prime)
break;
}
// then push it in primes if it is prime
if(is_prime)
primes.push_back(number);
请按照@ tobi303提供的链接,这是一个非常好的C ++资源。
C ++对于初学者来说并不容易,但如果你坚持下去就是有益的。
答案 1 :(得分:0)
这是一个简短的(c ++ 11)代码示例,其中包含lambdas和std :: find_if,它将向您展示如何在向量中查找偶数。您可以使用类似的技术来查找奇数,素数等。
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> myVector;
myVector.emplace_back(5);
myVector.emplace_back(3);
myVector.emplace_back(4);
std::vector<int>::iterator it = std::find_if(myVector.begin(), myVector.end(), [](int const& elem)
{ return elem % 2 == 0; });
if (it != myVector.end())
std::cout << "My even number is: " << (*it) << std::endl;
else
std::cout << "No even numbers in vector!"<< std::endl;
system("PAUSE");
return 0;
}