C++基础,输入一个数判断是否为素数,请问哪里出错了?

#include "iostream"
#include "cmath"
using namespace std;
int fun(int(n));
int main(){
    int x;
    cout<<"请输入一个整数"<<endl;
    cin>>x;
    if(fun(x))
       cout<<"不是素数"<<endl;
    else
       cout<<"是素数"<<endl;
    return 0;    

int fun(int(n)) 
{   
    int k,yes;
    yes=sqrt(n);
    for(k=2;k<=yes;k++)
        if(n%k==0)
           yes=0;
        if(k>yes)
           yes=1;
    return yes;
    
}

为啥要求根???

yes=sqrt(n);
    for(k=2;k<=yes;k++)

#include "iostream"
#include "cmath"
using namespace std;
int is_prime(int n);
int main(){
    int x=13; 
    string msg[]={"不是素数","是素数"};
    cout<<x<<msg[is_prime(x)]<<endl;
    return 0;    
} 
int is_prime(int n)
{   
    int k,sqr;
    int yes=1;//先假设是素数,在下面循环中进行否定
    sqr=sqrt(n)+1;
    for(k=2;k<=sqr;k++){
        
        if(n%k==0){//进行否定
           yes=0;
        }
    }
    return yes;
    
}

#include "iostream"
#include "cmath"
using namespace std;
int fun(int(n));
int main(){
    int x;
    cout<<"请输入一个整数"<<endl;
    cin>>x;
    if(!fun(x))
       cout<<"不是素数"<<endl;
    else
       cout<<"是素数"<<endl;
    return 0;    

int fun(int(n)) 
{   
    int k,yes = 0;
    yes=sqrt(n);
    for(k=2;k<=yes;k++)
        if(n%k==0)
           break;
    if(k>yes)
        return 1;
    return 0;
}

你代码有两个问题,见下图

问题1:fun表达的意思是是否为素数,是否反了

问题2, 需要两个变量,一个表达循环次数,一个表达是否为素数, 你将这两个变量合为一个变量yes了