验证哥德巴赫猜想:任何一个大于6 的偶数,都能分解成两个质数的和。要求输入一个整数,输出这个数能被分解成哪两个质数的和。 例如: 14 14=3+11 14=7+7
package practice.day08;
import java.util.Scanner;
public class Demo4 {
long num1;// 第一个素数
long num2;// 第二个素数
/**
* 输入一个数,从第一个数等于1开始遍历,第二个数等于num-num1;遍历到num/2即可,因为1+2=2+1=3;
* 如果两个数都是素数,则输出.
* @param num
*/
public void method(long num) {
for (num1 = 1; num1 <= num / 2; num1++) {
num2 = num - num1;
if (prime(num1) && prime(num2)) {
System.out.println(num + "=" + num1 + "+" + num2);
}
}
}
/**
* 判断是素数,2是素数,如果有数从2开始遍历到小于它可以被整除,则该数不是素数;否则是素数
* @param i
* @return
*/
static boolean prime(long i) {
if (i == 2)
return true;
else {
for (int k = 2; k < i; k++) {
if (i % k == 0)
return false;
}
return true;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个大于6的数");
long num = input.nextLong();
Demo4 demo = new Demo4();
demo.method(num);
}
}