查找给定的质量数量

finding given amount of prime number

本文关键字:质量数 查找      更新时间:2023-10-16

编写了本应该找到质数的给定数字(n(的程序,从2开始。我似乎找不到问题,我没有得到任何错误消息但是,我根本没有得到任何输出。任何帮助将不胜感激。

#include<cmath>
#include<cstdlib>
#include<string>
#include<list>
#include <forward_list>
#include<vector>
#include<unordered_map>
#include<algorithm>
#include <array>
#include <regex>
#include<random>
#include<stdexcept>
using namespace std;
bool is_prime(int a);
int main()
{
    cout<<"Give me the number of primes you want: n";
    int n;
    cin>>n;
    vector<int> primes;
    int i = 2;
    int count = 0;
    while (n < count)
    {
        if (is_prime(i))
        {
            primes.push_back(i);
            count++;
        }
        i++;
    }
    for (int i = 0; i < primes.size(); i++)
        cout<<"Prime number: "<< i + 1 << "t"<< primes[i] <<endl;
}
bool is_prime(int a)
{
    if (a <= 1)
        return false;
    else if (a == 2)
        return true;
    for (int i = 2; i < a; i++)
    {
        if (a % i == 0)
            return false;
    }
    return true;
};

您的错误在这里:

int count = 0;
while (n < count)

评估(n < count)时会发生什么?

素数检测的常规建议:

  1. 您的循环只需要测试sqrt(a)的划分。
  2. 您的循环只需要测试奇数数字(明确检查2案例之后(

是:

int stop = (int)sqrt(a);
for (int i = 3; i <= stop; i+=2)
{
  …
  1. 如果您真的想成为表演者,则由于您将素数积累到向量中,因此您实际上只需要测试a与您已经确认的素数的分裂性。