从[101,200]中找出质数,每页存储10个质数,返回第二页数据
思路:使用Map集合存储,get,put效率均为O(1)。页数判断
public List<Integer> getPrimePage(){
Map<Integer, List<Integer>> result = new HashMap<>();
int startNumber = 101;
int endNumber = 200;
int pageSize = 10;
int needPage = 2;
int num = 1;// 第几个质数
for(int i = startNumber; i <= endNumber; ++i){
if(isPrime(i)){
int pageNum = num / pageSize + (num % pageSize == 0 ? 0 : 1);
List<Integer> tmp = result.get(pageNum);
if(tmp == null){
tmp = new ArrayList<>();
}
tmp.add(i);
result.put(pageNum, tmp);
num++;
}
}
return result.get(needPage);
}
public boolean isPrime(int n) {
if (n <= 3) {
return true;
}
for (int i = 2; i <= Math.sqrt(n); ++i) {
if (n % i == 0)
return false;
}
return true;
}