感谢您花时间阅读这个问题!
程序是求十亿之后最小的素数。在 int main() 的末尾,我包含了一个控制台输入 cin>>x;
目的是防止命令提示符关闭得太快,以便我可以看到结果。但是,我意识到我必须先输入一些东西才能显示我想要的结果。
所以问题是:为什么会这样,即使控制台输出语句 cout<<i;
在输入语句之前 cin>>x;
?
#include <iostream>
#include <math.h>
using namespace std;
int is_prime(int x);
int main()
{
for (int i=100000000;;i++){
if(is_prime(i)){
cout<<i;
break;}
int x;
cin>>x;
}
}
int is_prime(int x)
{
double maxvalue = sqrt(static_cast<double>(x));
for ( int i=2;i<=maxvalue;i++){
if (x%i == 0 ) return false; }
return true;
}
最佳答案
似乎 cin >> x 在 for 循环中。因此,循环的每次迭代,您都会尝试从流中读取一些内容。因此,您需要在 i 变为素数之前输入一些数字。
编辑:显然,1000003 是质数,因此您不必输入很多数字。
关于c++ - 初级 C++ : Strange Behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798976/