以某种方式填充素数的向量

问题描述 投票:0回答:1

我被要求用质数填充给定的向量,我不能使用任何其他向量,数组或集合。我想出了类似的方法,但是它不能正常工作,我也不知道为什么。

#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;
}

有人可以帮我吗?

c++ vector primes
1个回答
-1
投票

有人不久前用代码发表了评论,但现在找不到了。我对该代码进行了一些更改,它似乎可以正常工作。只是它只能填写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;
    }
`
© www.soinside.com 2019 - 2024. All rights reserved.