该程序编写的程序应该从2开始查找给定数(n)的质数。我似乎找不到问题,我没有收到任何错误消息,但是,我没有得到任何输出。任何帮助将不胜感激。
#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;
};
答案 0 :(得分:3)
您的错误在这里:
int count = 0;
while (n < count)
评估(n < count)
时会发生什么?
关于素数检测的常用建议:
sqrt(a)
的除数即可。2
情况之后)也就是说:
int stop = (int)sqrt(a);
for (int i = 3; i <= stop; i+=2)
{
…
a
与已经确认的质数的可分性即可。