c++ - 初级 C++ : Strange Behaviour

标签 c++

感谢您花时间阅读这个问题!

程序是求十亿之后最小的素数。在 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/

相关文章:

c++ - 模仿结构/类之间的 C#/D 差异是否是好的 C++ 风格?

c++ - 删除数组中的尾随零

c++ - 为什么基类的构造函数先调用?

c++ - 具有可变浮点精度的 CString.Format

c++ - 确保覆盖 map 中的所有枚举值

c++ - 从文本文件中读取特定条目

c++部分模板特化,typename为void

c++ - 什么是处理 bool 代数方程的良好数据结构?

c++ - boost::进程间消息队列抛出错误

c++ - 可以考虑使用 C++ 引用给函数参数一个新名称吗?