我被要求用质数填充给定的向量,我不能使用任何其他向量,数组或集合。我想出了类似的方法,但是它不能正常工作,我也不知道为什么。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool isPrime(int n){
if (n<=1){return false;}
for (int i = 2; i < n; i++){
if (n % i == 0){
return false;
}
}
return true;}
int fillWithPrimesVec(vector<int>& vec){
for (int i = 0; i < vec.size(); i++){
for (int j = 0; j<INT_MAX; j++){
if (isPrime(j)){
vec.push_back(j);}
else{continue;}
}
}
return vec[0];
}
int main(){
int c[15];
size_t szc = sizeof(c)/sizeof(*c);
vector<int> d(szc,0);
cout << fillWithPrimesVec(d);
return 0;
}
有人可以帮我吗?
有人不久前用代码发表了评论,但现在找不到了。我对该代码进行了一些更改,它似乎可以正常工作。只是它只能填写16个数字,而不是15个。
`
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <climits>
bool isPrime(int n)
{
if (n <= 1) { return false; }
for (int i = 2; i < n / 2; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int fillWithPrimesVec(std::vector<int> &vec, const size_t size)
{
for (int j = 0; j < INT_MAX && vec.size() <= size; j++) {
if (isPrime(j)) {
vec.push_back(j);
}
}
for (int j = 0; j < INT_MAX && vec.size() <= size; j++)
return vec[j];
}
int main()
{
std::vector<int> d;
fillWithPrimesVec(d, 15);
for (auto item : d)
std::cout << item << " ";
return 0;
}
`