素数查找器找不到素数,7点后停止

所以我为3到200之间的数字做了一个简单的素数寻找器。它必须使用一个布尔variables,只是fyi。 没有错误发生。 输出是:

3到200之间的素数是:
3

7

为什么不继续? 我一次又一次地在纸上画出来,找不到我的逻辑错误。

此外; 我手写这个,因为我不知道如何获取我的文件的内容。 它存在于我没有root权限的远程主机上。 有没有更好的方法来复制文件?

#include <iostream> using namespace std; int main() { int count=0; cout<<"The prime numbers between 3 and 200 are: "<<endl; for (int i=3;i<=200;i++) { for (int j=2;j<i;j++) { bool ptest=i%j; if (!ptest) { break; } else if (ptest) { count=count+1; if (count==(i-2)) cout<<i<<endl; } } } } 

j循环中使用它之后,您忘了将count设置回0 。 移动行:

 int count = 0; 

在第一个for循环内。 然后你的程序工作正常(虽然如msw所示,这不是最有效的技术!)

有些事情要考虑:

  1. 您不需要考虑代码中的任何偶数。

  2. 你的代码中有一些逻辑错误。 count的值需要在第二个循环之后检查。 count需要在第二个for循环开始之前重置。

  3. 你可以立即停止后,你发现这个数字不是在内部循环素数,而不是继续。 你可以使用一个isPrime标志来代替计数。

以下是适用于我的代码版本:

 #include <iostream> using namespace std; int main() { cout << "The prime numbers between 3 and 200 are: " <<endl; for (int i=3; i <= 200; i += 2) { bool isPrime = true; for (int j=3; j < i; j += 2) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { cout << i << endl; } } } 

for (int j=3; j*j<=i; j+=2)