初学Java,遇到了这个试题,写了个小程序和大家分享一下。
题目:验证哥德巴赫猜想
给出N,测试4~N中的偶数是否都能写成两个素数相加,并将这个加法式子打印输出
解答:
package 哥德巴赫猜想;
/**
* 验证哥德巴赫猜想
* 给出N,测试4——n中的偶数是否都能写成两个素数相加,并将这个加法式子打印输出
*/
public class Guess {
public static void main(String[] args) {
int i;
int n = 214567890;
//循环输入4 - N 这里N取100
for (i = 4; i <= n; i += 2) {
for (int added = 2; added <= i / 2; added++) {//设置被加数
int add = i - added; //设置加数
//调用一个普通方法
if (test(add) == true && test(added) == true) { //当可以写成两个质数的和时,将结果打印,并结束这个数的循环
System.out.println(i + "可以写成" + added + "+" + add);
break;
}
}
}
}
public static boolean test(int a) { //写一个test方法 接收主方法的值,判断一个数是不是素数,并返回一个布尔值变量
boolean ifsushu = false;
if (a == 2) {
return true; //a=2时 直接输出是素数
}
for (int i = 2; i < a; i++) {
if (a % i == 0) {
//说明不是素数,跳出循环
return false;
}
ifsushu = true;//循环完成后都有余数,说明是素数
}
return ifsushu;
}
}