从键盘接收任意两个正整数,要求第一个正整数必须小于第二个正整数。然后把这两个数范围之内(包括这两个数)的所有偶数分解为两个素数之和,并输出每个偶数以及对应的两个素数
方法一
package day05;
import java.util.Scanner;
/**
* @author Baiysmart
* @create 2020-04-04 19:33
*/
/*
从键盘接收任意两个正整数,
要求第一个正整数必须小于第二个正整数。
然后把这两个数范围之内(包括这两个数)
的所有偶数分解为两个素数之和,
并输出每个偶数以及对应的两个素数
*/
public class PrimeNumberTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入number1:");
int number1 = scan.nextInt();
System.out.println("请输入number2");
int number2 = scan.nextInt();
if (number1 < number2 && number1 > 0 && number2 > 0) {
for (int i = number1; i <= number2; i++) {
if (i % 2 == 0) {
for (int j = 2; j < i / 2; j++) {
if (isPrime(j) && isPrime(i - j)) {
System.out.println(j + "---" + (i - j));
}
}
}
}
}
}
public static boolean isPrime(int n) {
boolean b1 = true;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
b1 = false;
break;
}
}
return b1;
}
}
方法二
package day05;
import java.util.Scanner;
/**
* @author Baiysmart
* @create 2020-04-05 10:29
*/
/*
从键盘接收任意两个正整数,
要求第一个正整数必须小于第二个正整数。
然后把这两个数范围之内(包括这两个数)
的所有偶数分解为两个素数之和,
并输出每个偶数以及对应的两个素数
*/
public class PrimeNumberTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入number1");
int number1 = scan.nextInt();
System.out.println("请输入number2");
int number2 = scan.nextInt();
if (number1<number2){
primeSum(number1,number2);
}else{
System.out.println("number1要小于number2");
}
}
//判断是否为素数
public static boolean isPrime(int n) {
boolean b1 = true;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
b1 = false;
break;
}
}
return b1;
}
//将偶数分解为两个素数相加
public static void primeSum(int n1, int n2) {
for (int i = n1; i <= n2; i++) {
if (i % 2 == 0) {
for (int j = 2; j < i / 2; j++) {
if (isPrime(j) && isPrime(i - j)) {
System.out.println(j + "---" + (i - j));
}
}
}
}
}
}