- IsPrime类的verify()方法用于判断一个整数是不是质数
public class IsPrime {
// 定义一个公有、有参、有返回值、静态方法,用于判断传入的整数是不是质数
// 返回true为质数,返回false则不是质数
public static Boolean verify(int num) {
// 默认标记为质数
Boolean isPrime = true;
//非2偶数和1需要排除
if ((num%2==0&&num!=2)||num==1) {
isPrime=false;
}
for (int i = 2; i <= num-1; i++) {
isPrime = true;
// 如果参数能被除了本身和1以外的数整除,则不为质数
if (num % i == 0) {
isPrime = false;
break;
}
}
// 如果没有找到反例,则参数为质数
if (isPrime) {
return true;
}
return false;
}
}
- 证明猜想
public class Goldbach {
// 证明指定范围以内哥德巴赫猜想(任意大于2的偶数可以表示为2个质数的和)
public static void guess(int num) {
// 两个质数的初始值赋为2
int a = 2;
int b = 2;
// 用于标记是否满足猜想条件
Boolean exist = false;
// n到num之间所有的数
for (int n = 4; n <= num; n++) {
// 每轮内层循环结束后将标记复位
exist = false;
// 当n为大于2的偶数时
if (n % 2 == 0 && n > 2) {
// 内层循环完后将被加数置为初始值
a = 2;
for (; a < n; a++) {
// 内层循环完后将加数置为初始值
b = 2;
if (!exist) {
for (; b < n; b++) {
// 当两个质数之和等于当前偶数,则标记为满足猜想条件,跳出当前内循环
if (IsPrime.verify(a) && IsPrime.verify(b) && (a + b == n)) {
System.out.println(a + "+" + b + "=" + n);
exist = true;
break;
}
}
}
}
}
}
}
}