素数又称质数,是除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不是素数
- 素数表长至少比n大1