素数又称质数,是除1和本身之外不能被其他数整除的一类数。

1既不是素数,也不是合数。

素数的判断

要判断一个数是否为素数,要判断2~n-1,能否整除n,只要出现能整除的数,就判断为非素数。

此方法为保险方法:

bool isPrime(int n){
    if(n==1)return false;
    int sqr=(int)sqrt(n*1.0);//sqrt的参数为浮点数,乘1.0使之变为浮点数,再进行强转
    for(int i=0;i<=sqr;i++){
        if(n%i==0)return false;
    }
    return true;
}

此方法为简单方法:

bool isPrime(int n){
    if(n==1)return false;
    for(int i=0;i*i<n;i++){
        if(n%i==0)return false;
    }
    return true;
}

//求1~100里的素数

埃式筛法

int prime[100];
int num=0;
bool hashTable[100]={0};
void Find_Prime(){
    for(int i=2;i<100;i++){//第一个素数是2
        if(hashTable[i]==false){//如果当前数没有被筛选出去
            prime[num++]=i;//将此数保存入用来存储素数的数组中
            for(int j=i+i;j<100;j+=i){//将当前数的倍数筛选出去
                hashTable[j]=true;
            }
        }
    }
}

注意

  1. 1不是素数
  2. 素数表长至少比n大1