好像不是所有的偶数都可以啊[Java] 纯文本查看 复制代码 import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.omg.CORBA.PUBLIC_MEMBER;
/**
* 将一偶数变成两素数之和
* 思路
* 获取偶数
* 获取小于它的素数List
* 遍历相加以验证
* @author Administrator
*
*/
public class OuShuHuanChengLiangSuShuHe {
/**
* 素数集合
*/
List<Integer> listOfSuShu;
/**
* 构造器,初始化listOfShuSu
*/
public OuShuHuanChengLiangSuShuHe(){
this.listOfSuShu=new ArrayList<Integer>();
}
/**
* main
*/
public static void main(String[] args) {
int check=2;
do{OuShuHuanChengLiangSuShuHe it=new OuShuHuanChengLiangSuShuHe();
System.out.print("请输入一偶数:");
Scanner input=new Scanner(System.in);
int ouShu=input.nextInt();
it.listOfSuShu=it.getSuShu(ouShu);
List<Integer>result=it.change(ouShu, it.listOfSuShu);
//打印输出结果
if(result.size()==0){
System.out.println("该数不可以转换");
}else{
System.out.print(ouShu+"可以由下面数字相乘得来:");
for(int i:result){
System.out.print(i+" ");
}
System.out.println();
}
System.err.println("是否继续(1.是 2.否)");
do{check=input.nextInt();
if(check==1||check==2){
break;
}
System.out.print("输入错误,重新输入:");
}while(true);
}while(check==1);
}
/**
* 获取素数
*/
public List<Integer> getSuShu(int oushu) {
List<Integer> sushus=new ArrayList<Integer>();
class Inner{
boolean check(int m){
for(int j=2;j<m;j++){
if(m%j==0){
return false;
}
}return true;
}
}
Inner inner=new Inner();
for(int i=1;i<oushu;i++){
if(inner.check(i)){
sushus.add(i);
}
}
System.out.print("小于"+oushu+"的素数如下所示");
for(int i:sushus){
System.out.print(i+" ");
}
System.out.println();
return sushus;
}
/**
* 获取可以转换的素数
* @param oushu
* @param list
* @return
*/
public List<Integer> change(int oushu,List<Integer> list){
List<Integer>result=new ArrayList<Integer>();
for(int i=0;i<list.size();i++){
for(int j=0;j<list.size()&&j!=i;j++){
if(oushu==list.get(i)*list.get(j)){
result.add(list.get(i));
result.add(list.get(j));
}
}
}
return result;
}
}
|