质数(prime number)也称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,也就是说除了它本身外和1,否则称为合数。 对质数的判断通常有5种方法:
第一种:
直接筛选法
解题思路:
根据素数的定义,我们可以简单地想到:若要判断n是不是素数,我们可以直接写一个循环(i从2到n-1,进行n%i运算,即n能不能被i整除,如被整除即不是素数。若所有的i都不能整除,n即为素数)。
代码分析:
boolean Prime(int n){
for(int i=2;i<n;i++){//如果n被i整除,则返回false
if(n%i==0){
return false;
break;
}
}
return true; // 反之则返回true
}
改进版:
代码分析:
这段代码实现的功能是判断一个整数n是否是质数。具体来说,该函数从2到sqrt(n)(sqrt是求平方根的函数)遍历每个数i,判断n是否能被i整除。如果能被整除,则说明n不是质数,返回false;如果所有的i都不能整除n,则说明n是质数,返回true
boolean Prime(int n){
// 从2到sqrt(n)遍历每个数i
for (int i = 2; i <= (int) Math.sqrt(n); i++ ){
// 如果n被i整除,则返回false
if(n % i == 0){
return false;
}
}
// 反之则返回true
return true;
}
第二种:
数组筛选
/*
number:要查询的数字
count:素数表中素数的个数
primeArray:素数表数组
**/
boolean Prime(int number, int count, int[] primeArray){
for (i = 0; i < count; i++){
if (number % primeArray[i] == 0){
return false;
break;
}
}
return true;
}
第三种: