所以我为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所示,这不是最有效的技术!)
有些事情要考虑:
您不需要考虑代码中的任何偶数。
你的代码中有一些逻辑错误。 count
的值需要在第二个循环之后检查。 count
需要在第二个for
循环开始之前重置。
你可以立即停止后,你发现这个数字不是在内部循环素数,而不是继续。 你可以使用一个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)