编程验证哥德巴赫猜想
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大的整数不是素数就是合数。
如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。
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大的整数不是素数就是合数。
如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。
相关文章推荐
- 编程验证哥德巴赫猜想
- 编程验证哥德巴赫猜想
- Java编程实现验证哥德巴赫猜想
- ASP.NET 3.5核心编程学习笔记(49):ASP.NET安全性之Forms身份验证
- OJ题:验证哥德巴赫猜想(C++)
- 由表单验证说起,关于在C#中尝试链式编程的实践
- ZZULIOJ【1093】验证哥德巴赫猜想【函数】
- 编程点滴.验证信息本地化遇到的问题
- 【block编程第三篇】block内存管理——如何验证block在栈上,还是堆上
- zzuli OJ 1093: 验证哥德巴赫猜想(函数专题)
- ASP.NET MVC下的四种验证编程方式
- 循环-04. 验证“哥德巴赫猜想”(20)
- struts2之简单校验(编程验证)
- 使用函数验证哥德巴赫猜想
- ASP.NET MVC下的四种验证编程方式
- 写一个函数验证哥德巴赫猜想
- 前端编程提高之旅(十)----表单验证插件与cookie插件
- ASP.NET MVC下的四种验证编程方式[续篇]
- [转载][code]VB系统编程,隐藏进程、进程控制、正版验证等。
- 验证哥德巴赫猜想(范围不大)