在使用散列表时,影响散列情性能的最个很重要的因子就是初始容量,有研究认为需要为这个大小指定一个已知数量规模的1.5倍大小并且要求是一个质数,现在封装一个方法直接使用就可以了,不用现场计算了。
闲话不说,直接上代码:
/**
* @author liwei
*
*/
public class Prime {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Prime prime = new Prime();
int result = 0;
result = prime.get(150, 160);
System.out.println("按范围找第一个出现的素数:" + result);
result = prime.getAfter(150);
System.out.println("找某个数之后的第一个素数:" + result);
result = prime.getBefore(148);
System.out.println("找某个数之前的最后一个素数:" + result);
}
public int get(int min, int max) {
int result = 0;
for (int i = min; i <= max && result == 0; i++) {
for (int k = 2; k <= i; k++) {
// 排除所有在 i = k 之前 能被k整除(余数为0)的数
if (i % k == 0 && i != k) {
break;
}
// 输出所有在 i = k 且 i % k = 0的数
if (i % k == 0 && i == k) {
result = i;
}
}
}
return result;
}
public int getAfter(int num) {
int result = 0;
for (int i = num; i <= num * 2 && result == 0; i++) {
for (int k = 2; k <= i; k++) {
// 排除所有在 i = k 之前 能被k整除(余数为0)的数
if (i % k == 0 && i != k) {
break;
}
// 输出所有在 i = k 且 i % k = 0的数
if (i % k == 0 && i == k) {
result = i;
}
}
}
return result;
}
public int getBefore(int num) {
int result = 0;
for (int i = num; i >= 0 && result == 0; i--) {
for (int k = 2; k <= i; k++) {
// 排除所有在 i = k 之前 能被k整除(余数为0)的数
if (i % k == 0 && i != k) {
break;
}
// 输出所有在 i = k 且 i % k = 0的数
if (i % k == 0 && i == k) {
result = i;
}
}
}
return result;
}
}
测试运行结果如下图所示: