我正在尝试创建一个bool Isprime函数,它创建一个覆盖用户输入整数的素数列表,然后线性搜索该列表,如果输入整数在该列表中,则返回true。我有一个问题,但是,弄清楚如何制作覆盖输入整数的列表(也就是说,如果用户输入4,列表必须有2,3和5)。
这是我到目前为止的代码(我知道这是完全错误的,我已经尝试过做研究,但我无法弄清楚如何做到这一点。
bool Isprime(int N){
int i,tprime=3;
list<int>prime;
prime.push_back(2);
list<int>::iterator it;
for (it=prime.begin();it!=prime.end();it++){
if (*it<N){
while (i<sqrt(tprime)){
if(N%i!=0){
if(i<sqrt(tprime))
i++;
else prime.push_back(tprime);
}
tprime++;
}
}
}
for (it=prime.begin();it!=prime.end();it++){
if (*it==N)
return true;
}
return false;
}
你们能给我一些关于如何使这项工作的提示吗?我可以弄清楚线性搜索。
答案 0 :(得分:0)
您有一个已知质数列表,您可以使用它来检查每个单独的数字以查看它是否为素数。现在,您尝试在外层迭代此列表。这似乎不太正确。
这是一种方法(匹配您尝试做的事情):