1、首先书写判断素数的方法
public Boolean isSuNum(int i){
for(int j =2 ; j <= Math.sqrt(i) ;j++ ){
if(i%j==0){
return false;
}
else{
continue;
}
}
return true;
}
2、写出获取所有小于指定数的所有素数集合的方法,使用ArrayList方便将结果进行遍历组合
public ArrayList<Integer> getAllSuNum(int i){
ArrayList<Integer> suSums = new ArrayList<>();
for(int j = 1; j < i ;j++){
if(isSuNum(j)){
suSums.add(j);
}
}
return suSums;
}
3、将上诉结果遍历,并将所有的可能相加的结果进行相加(注意:代码中实现的是两个素数不相等的情况)
public Set<Map<Integer,Integer>> getAddNum(int i){
Set<Map<Integer,Integer>> result = new HashSet<>() ;
ArrayList<Integer> AllSuNum = getAllSuNum(i);
for(int j = 0 ; j < AllSuNum.size()-1 ; j ++){
for(int k = j+1 ; k < AllSuNum.size() ; k++){
Integer first = AllSuNum.get(j);
Integer second = AllSuNum.get(k);
if(first + second == i){
HashMap<Integer,Integer> hashMap = new HashMap<Integer, Integer>();
hashMap.put(first,second);
result.add(hashMap);
}
}
}
return result;
}
4、测试方法
public static void main(String[] args) {
System.out.println("开始");
GetSuNum getSuNum = new GetSuNum();
ArrayList<Integer> allSuNum = getSuNum.getAllSuNum(20);
Set<Map<Integer,Integer>> set = getSuNum.GetAddNum(20);
for(Map<Integer,Integer> map :set){
for(Integer key : map.keySet()){
System.out.println(""+key+","+map.get(key));
}
}
}
5、测试结果
开始
1,19
3,17
7,13