”求第n小的质数“代码,我按书上手打的代码最后无法输出结果?

跟书上的代码基本一致。只是改成了cin和cout,编译也没有错误,就是无法输出结果,我还怀疑是电脑的问题,打了另外一个简单代码,可以输出。
求大佬看看这是什么情况。

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int n,i,s=0;
    cin>>n;
    for(i=2;;++i)
    {
        int x=2;
        while(x<=floor(sqrt(i))&&i%x!=0)
        if(x>floor(sqrt(i)))
        {
            s++;
            if(s==n)
            {
                cout<<i<<endl;
                break;
            }
        }
    }
    return 0;
}

图片说明

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int n,i,s=0;
    cin>>n;
    for(i=2;;++i)
    {
        int x=2;
        while(x<=floor(sqrt((double)i))&&i%x!=0) x++; //这里加上x++
        if(x>floor(sqrt((double)i)))
        {
            s++;
            if(s==n)
            {
                cout<<i<<endl;
                break;
            }
        }
    }
    return 0;
}

问题解决的话,请点下采纳