一、判断1到该数本身一共能被多少数整除,若只能被两个数整除,则该数为质数。
int n = 0;
for(int i = 1; i < = num; i++){ //遍历1-num的所有整数与num相除,得出num能被多少个数整除
if(num%i==0){
n++;
}
}
if(n == 2){ //只能被两个数整除,则num为质数
//num是质数
}
else{
//num不是质数
}
二、判断该数除1和本身,是否能被其他数整除,若不能,则该数为质数。
bool s = false;
for(int i = 2; i < num; i++){ //遍历2-(num-1)的所有整数与num相除,若其中有数字能被num整除,则num不是质数
if(num%i == 0){
s = true;
}
}
if(s){
//num不是质数
}
else{
// num是质数
}
***关于方案二的优化
*减少计算机运算量
bool s = false; for(int i = 2; i < num/2 ; i++){ //当i>num/2是不可能被num整除的,可以直接排除 if(num%i == 0){ s = true; break; //当2-num/2中有1个数能被num整除,说明num不是质数,可直接结束循环,提高效率 } } if(s){ //num不是质数 } else{ // num是质数 }
基本思路还是质数只能被1和本身整除,方案一和方案二只是根据这一思路使用了不同的判断方法。