家庭作业帮助:素数

时间:2013-10-06 16:32:45

标签: c++ list primes

我正在尝试创建一个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;
}

你们能给我一些关于如何使这项工作的提示吗?我可以弄清楚线性搜索。

1 个答案:

答案 0 :(得分:0)

您有一个已知质数列表,您可以使用它来检查每个单独的数字以查看它是否为素数。现在,您尝试在外层迭代此列表。这似乎不太正确。

这是一种方法(匹配您尝试做的事情):

  1. 从3到您想要的数字计算。
  2. 确定您需要检查的最大素数值(即数字的平方根)
  3. 对于每个数字,通过确定将其划分为已知质数列表的每个元素的提醒,检查它是否为素数,直至您需要检查的最大值。
  4. 如果数字是素数,请将其添加到已知素数列表中。