如果利用c++判断一个数是不是素数

#include
using namespace std;
int main()
{
int n,i=2;
cin>>n;
if(n>0)
for(int i=2;i<n;i++)
{
if(n%i==0)
cout<<"该数不是素数"<<endl;
break;
}
if(n%i==0)
{
if(i>=n)
cout<<"该数是素数" <<endl;
else
cout<<"该数不是素数"<<endl;
}
else
cout<<"该数是素数"<<endl;
return 0;
} 这个代码错了 用33验证 33不是素数 但是这个代码说的是素数


//  判断一个数是不是素数,1 < N <= 50000
#include <iostream>
#include <cmath>

using namespace std;

// 如果为真,即是素数;否则,不是素数
bool isPrime(int n) 
{
    int i;
    for(i = 2; i <= sqrt(n); i++) 
    {
        if((n % i) == 0) // 如果能被除了1和它本身的数整除,就不是素数
            return false;
    }
    return true; // 是素数
}
 
 
int main(int argc, const char * argv[]) 
{
    int n;
    bool isFlag;  
    while(cin >> n) 
    {
        isFlag = isPrime(n); // 调用判断是否是素数的函数
        if(isFlag)
            cout << n << "是素数" << endl;
        else
            cout << n << "不是素数" << endl;
    }
    return 0;
}

#include <iostream> 
using namespace std;
int aaa(int n){
    if(n<=1){
        return 2;
        
    }
    for(int i=2;i<n;i++){
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}
int main(){
    int x;
    cin>>x;
    if(aaa(x)==0){
        cout<<"合数"; 
    }
    else if(aaa(x)==1) {
        cout<<"质数";}
    else{
         cout<<"非质非合"; 
    } 
         
    }