素数检查器?

时间:2014-03-16 23:40:24

标签: visual-c++ c++11

我试图创建一个程序来检查一个给定的数字(1到1000之间)是否为素数,但遇到了一两个问题。我下面的代码将运行,但由于第14行输出1000次(for(int i = 3; i< = ELEMENTS; i ++){)我知道为什么它运行了1000次但我可以&#39找不到它的方法。

#include<iostream>
using namespace std;

int main(){
cout << "enter number of interest: ";
  int num;
    cin >> num;


const int ELEMENTS =1000;

bool multiples[ELEMENTS] = {};  

for(int i = 3; i <= ELEMENTS; i++){

  for(int j = 2; j <= i - 1; j++){
      multiples[i]=true;
    if(i % j == 0){
      multiples[j]=false;

    }
  }
  if((multiples[num] == true)){
    cout << num << " is prime" << endl;
  }
  else
  cout <<num<< " is not prime"<<endl;
}

return 0;
}

1 个答案:

答案 0 :(得分:2)

将其移出for循环。由于它使用的变量是在for循环范围之外定义的,因此它可以正常工作。

编辑:正确的片段:

for(int i = 3; i <= ELEMENTS; i++){
  for(int j = 2; j <= i - 1; j++){
    multiples[i]=true;
    if(i % j == 0){
      multiples[j]=false;
    }
  }
}
if (multiples[num] == true) {
  cout << num << " is prime" << endl;
}
else
  cout << num << " is not prime" << endl;