c++求区间素数用bool函数

编写一个判别正整数n是否为素数的函数,在主函数中输入两个正整数a,b(1<a<b)调用此函数求a,b之间的所有素数,用bool prime(int n)

#include<iostream>
using namespace std;
bool prime(int n){
    for(int i=2;i*i<=n;i++){
        if(n%i==0)
        return false;
    }
    return true;
}
int main() {
    int a,b;
    cin >> a>>b;
    for(int i=a;i<=b;i++){
        if(prime(i)){
            cout<<i<<" ";
        }
    }
    return 0;
}

#include <iostream>

using namespace std;

bool prime(const int& num)
{
    int a=0;
    for(int i=2;i<num;i++){
        if(num%i==0){
            a++;  
        }
    }
    if(a==0)
        return true;
    else
        return false;
}

void GetPrime(const int &a,const int &b)
{
    if(a<2 || b<2 || a>=b)
    {
        cout<<"param is valid"<<endl;
        return;
    }
        
    for(int i=a;i<=b;i++)
    {
        if(prime(i))
            cout<<i<<endl;
        else
            continue;
    }

}

int main()
{
    GetPrime(100,200);

    return 0;
 } 

或者怎么求素数?