首先,从2遍历至偶数的一半,同时判断该数是否为素数;如果该数为素数,再判断偶数与该数的差是否为素数,如果为,则题目的到验证,如果不为则继续遍历;如果该数不为素数,继续遍历。
其次,关于如何判断一个数为素数,可以先设置一个标志,该标志的初始值默认此数为素数,再用循环遍历从2到该数的开方(这样是遍历次数最少的),如果该数取余循环变量为0,则此数不为素数,同时改变标志的值;否则,该数为素数,总之,最后根据标志的值判断是否为素数
注意:
(1)偶数输入时判断是否为偶数
(2)可将素数的判断单独封装成方法
代码如下:
package com.test100;
import java.util.Scanner;
import static java.lang.Math.sqrt;
public class Main1 {
public static void main(String[] args) {
int num;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个偶数:");
boolean flag;
do{
flag = false;//代表默认为偶数
num = sc.nextInt();
if (num%2!=0){
flag = true;//部位偶数
System.out.println("您输入的数不是偶数,请重新输入!");
}
}while(flag);//检查输入是否正确
flag = false;//此时flag表示是证实题目
for (int i = 2; i <= num/2; i++) {
if(IfPrimeNumber(i)){
if (IfPrimeNumber(num-i)){
flag = true;
break;
}
}
}
if (flag){
System.out.println("一个偶数总能表示为两个偶数之和");
}else {
System.out.println("一个偶数不总能表示为两个偶数之和");
}
}
private static boolean IfPrimeNumber(int i) {
boolean flag = true;
for (int j = 2; j <= sqrt(i); j++) {
if(i%j==0){
flag = false;
break;
}
}
return flag;
}
}
欢迎指出问题