-1

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

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

4

1 回答 1

0

你有一个已知素数的列表,你可以用它来检查每个单独的数字,看看它是否是素数。现在你尝试在外层迭代这个列表。这似乎不太对劲。

这是一种解决方法(与您尝试做的相匹配):

  1. 从 3 数到您要查找的数字。
  2. 确定您需要检查的最大质数(即数字的平方根)
  3. 对于每个数字,通过确定将其划分为已知素数列表的每个元素直到您需要检查的最大值的提醒来检查它是否是素数。
  4. 如果数字是素数,则将其添加到已知素数列表中。
于 2013-10-06T16:42:11.913 回答