我试图创建一个程序来检查一个给定的数字(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;
}
答案 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;