素数:(质数prime number)定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,素数有无穷多个。
先来一张 2-200素数分布表
传统判断素数方法
1.开根号法
从2到√n整除判断
public static boolean isPrime(int num){
if(num == 0|| num ==1){
return false;
}
for(int i=2;i<= sqrt(num); i++ ){
if( num% i ==0){
return false;
}
}
return true;
}
2.孪生素数
孪生素数:就是指相差2的素数对,例如3和5、5和7、11和13、17和19……
从上面的素数分布表和 孪生素数对可以看出来,大于3的素数只分布在6n-1和6n+1两数列中。
public static boolean isPrime(int num){
//0和1不是素数
if(num == 0|| num ==1){
return false;
}
//2和3是素数
if(num == 2 || num ==3){
return true;
}
//不在6的左边和右边 直接判断不是素数
if(num%6 != 1 && num%6 !=5){
return false;
}
//加6的原因是 素数只分布在6n-1和6n+1两数列中
for(int i=5; i <= sqrt(num) ;i+=6){
if(num %i== 0 || num %(i+ 2)==0 ) { //判断是否能被整除
return false;
}
}
return true;
}
感谢观看,希望对你有帮助。