-
package test;
-
/**验证3-100中的所有偶数都能表示为两个质数之和*///质数是 除了1和它本身外,不能被其他自然数整除
-
public class Guess2 {
-
//如果满足猜想就输出\"猜想是正确的\" 不满足就输出\"猜想不正确\"
-
public static void main(String[] args) {
-
System.out.println(\"在1~100范围内,现在开始证实哥德巴赫猜想:\");
-
if (testifyGuess(1, 100)) {
-
System.out.println(\"在 1~100范围内,哥德巴赫猜想是正确的。\");
-
} else {
-
System.out.println(\"哥德巴赫猜想是错误的\");
-
}
-
}
-
-
-
/**
-
A.验证哥德巴赫猜想:从最小数low到最大数high拿到每一个数传入到isGoldbach()中进行验证
-
当有一个数不满足就返回false,所有数都满足就返回true*/
-
public static boolean testifyGuess(int low, int high) {
-
int i, j = 0;
-
boolean flag = true;
-
for (i = low; i <= high; i++){
-
if (i%2 == 0 && i>2){
-
if (isGoldbach(i)){
-
j++;
-
if (j == 5) {
-
System.out.println();
-
j = 0;
-
}
-
} else {
-
flag = false;
-
break;
-
}
-
}
-
}
-
return flag;
-
}
-
-
/**B.真正进行验证哥德巴赫猜想的方法(testifyGuess方法是调用这个方法进行验证的 )
-
* 验证整数a是否满足猜想:从1到a/2之间拿到每一个数i, 看i和a-i这一对数是否都是质数
-
* 如果是就结束循环返回true,如果在1到a/2之间没有一对数符合就返回false
-
*/
-
public static boolean isGoldbach(int a) {
-
int i;boolean flag = false;
-
for (i = 1; i <= a / 2; i++) {
-
if (isPrime(i) && isPrime(a - i)) {
-
flag = true;
-
System.out.print(a + \"=\" + i + \"+\" + (a - i) + \" \");
-
break;
-
}
-
}
-
return flag;
-
}
-
-
-
-
/**C.验证一个数是否是质数: 除了1和它本身外,不能被其他自然数整除
-
如果这个数i是1就返回false表示这个数不是质数
-
如果这个数i不是1,就从2到i-1之间拿到每一个数n,判断这个数是否能被n整除
-
如果能整除就返回false表示此数i不是质数,
-
如果2到i-1之间所有数都不能整除i就返回true表示此数是质数
-
*/
-
public static boolean isPrime(int i) {
-
int n; boolean flag = true;
-
if (1 == i){flag = false;}
-
for (n = 2; n <= i - 1; n++)
-
if (i % n == 0) {
-
flag = false;
-
break;
-
}
-
return flag;
-
}
-
}
-
//看本题应该从下往上看,先看懂isPrime()然后,再看isGoldbach最,后看testifyGuess
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30246495/viewspace-1669429/
,如需转载,请注明出处,否则将追究法律责任。