您的位置:首页 > 编程语言

编程验证哥德巴赫猜想

2014-05-09 00:00 176 查看
摘要: 验证哥德巴赫猜想、验证一个数是否为素数

1 源码:

public class Test {

public static void main(String[] args) {

// 验证任何大于2的偶数都可以表示为两个素数之和

System.out.println("请输入一个大于2的偶数:");

Scanner scanner = new Scanner(System.in);

int num = scanner.nextInt();

while (num <= 2 || num % 2 == 1) {

System.out.println("输入错误请重新输入:");

scanner = new Scanner(System.in);

num = scanner.nextInt();

}

for (int i = 2; i <= num - i; i++) {

if (isPrimeNum(i) && isPrimeNum(num - i)) {

System.out.println(num + "=" + i + "+" + (num - i));

}

}

// 验证任何大于5的奇数都可以表示为三个素数之和

System.out.println("请输入一个大于5的奇数:");

scanner = new Scanner(System.in);

num = scanner.nextInt();

while (num <= 5 || num % 2 == 0) {

System.out.println("输入错误请重新输入:");

scanner = new Scanner(System.in);

num = scanner.nextInt();

}

for (int i = 2; i <= num - i; i++) {

for (int j = 2; j <= num - i - j; j++) {

// 去重

if (j >= i) {

if (isPrimeNum(i) && isPrimeNum(j) && isPrimeNum(num - i - j)) {

System.out.println(num + "=" + i + "+" + j + "+" + (num - i - j));

}

}

}

}

}

/**

* 判断一个数是否为素数(质数)

*/

public static boolean isPrimeNum(int num) {

for (int i = 2; i <= (int) Math.sqrt(num); i++) {

if (num % i == 0) {

return false;

}

}

return true;

}

}

2 细节问题分析

java判断一个数是否为素数,为什么用Math中的sqrt函数?

答:素数又称质数。指在一个大于1的自然数中,除了1和此整数自身之外,没法被其他自然数整除的数。合数是指自然数中除能被1和本整数整除外,还能被其他的
3ff0
整数整除的数。比1大的整数不是素数就是合数。

如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: