输出错误的项目Euler 7

cor*_*tex 0 c++

所以我正在尝试Euler项目的问题7.

通过列出前六个素数:2,3,5,7,11和13,我们可以看到第6个素数是13.什么是10个第001个素数?

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

bool isPrime(int a){
    if (a==2||a==3){
        return true;
    }
    if (a%2==0){
        return false;
    }

    bool prime=true;
    for (int b=2;b<sqrt(a);b++){
        if (a%b==0)
            prime=false;

    }
    if (prime==true)
        return true;
    else 
        return false;
}

int main(){
    int infinite=0;
    long long int primecounter=0;
    for (int c=2;infinite==0;c++){
        if (isPrime(c)==true){
            primecounter++;
            //cout<<c<<endl;
            if (primecounter==10001)
                {cout<<c;

            break;}
        }
    }
    return 0;}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所提出的.它适用于我测试的少数数字,如第6个素数等.但是,当我为第1000个素数运行它时,它给了我104021,答案是错误的.有人能告诉我我的代码有什么问题吗?

Ben*_*oit 8

哪里弄错了b < sqrt(a).想想a = 25,在这种情况下会发生什么?

评论已经指出了其余的答案.