[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;
}
}
[Java] 纯文本查看 复制代码
public class Practice {
public static void main(String[] args) {
int i = 80;
num1: for(int num1 = 1;num1 < i;num1++) { //num1从1到i
if(num1 >= 4) {
for(int x = 2;x <= num1 / 2; x++) { //判断num1是否为质数
if(num1 % x == 0) {
continue num1; //num1不是质数,跳到下一个num1;
}
}
}
num2: for(int num2 = 1;num2 < i;num2++) { //num2从1到i
if(num2 >= 4) {
for(int x = 2;x <= num2 / 2; x++) {//判断num2是否为质数
if(num2 % x == 0) {
continue num2; //num2不是质数,跳到下一个num2;
}
}
}
if(num1 + num2 == i) { //num1与num2之和为i,就输出
System.out.println(i + "=" + num1 + " + " + num2);
}
}
}
}
}