【问题标题】:Prime number checker?质数检查器?
【发布时间】:2014-03-16 23:40:23
【问题描述】:

我正在尝试创建一个程序来检查给定数字(1 到 1000 之间)是否为素数,但遇到一两个问题。我下面的代码将运行,但由于第 14 行输出 1000 次 (for(int i = 3; i

#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;
}

【问题讨论】:

  • 记得用那个大勾号将答案标记为解决问题。

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


【解决方案1】:

将其移出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;

【讨论】:

  • 我应该从 for 循环中移出什么?
  • @user3238772 带有打印语句的if-else 块。
  • 我添加了固定样本
  • 谢谢,问题解决了。但是,现在我输入编译器的大多数素数都说它们不是素数:/
猜你喜欢
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多