黑马程序员技术交流社区
标题:
歌德巴赫猜想
[打印本页]
作者:
为梦想而活着
时间:
2014-4-10 20:45
标题:
歌德巴赫猜想
验证:2000以内的正偶数都能够分解为两个素数之和。(判定一个整数n是否
为素数就是要判定整数n能否被除1和它自身之外的任意自然数整除,若都不
能整除,则n 为素数。
用Java语言如何验证他的正确性呢?
作者:
赵小豪
时间:
2014-4-10 21:14
public class TextNum {
public static void main(String[] args) {
int i, n;
for (i = 4; i <= 2000; i += 2) {
for (n = 2; n < i; n++)
// 将偶数i分解为两个整数
if (fflag(n)) //分别判断两个整数是否均为素数
if (fflag(i - n)) {
System.out.println(i + "=" + n + "+" + (i - n)); // 若均是素数则输出
break;
}
if (n == i) System.out.println("error: " + i); //打印出不是的
}
}
//判断是否是素数的
static boolean fflag(int num)
{
int j;
if (num <= 1) return false; //小于等于1的不成立
if (num == 2) return true; //如果是2成立
if (!((num % 2) == 0)) return false; // 如果不是偶数不成立
for (j = 3; j <= (int) (Math.sqrt((double) num) + 1); j += 2) //从3开始到该整数的平方根
if (!((num % j) == 0)) return false;//如果不是素数不成立
return true; //如果以上都没有返回则该数是素数
}
}
作者:
小歪
时间:
2014-4-11 11:22
///....................................
作者:
小歪
时间:
2014-4-11 11:24
代码呢我和上面那哥们基本一样,就不重复了,细的说下思路:
为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解为两部分,然后判断出分解出的两个整数是否均为素数。若是,则满足题意;否则重新进行分解和判断。
程序中对判断是否为素数的算法进行了改进,对整数判断“用从2开始到该整数的一半”改为“2开始到该整数的平方根”。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2