A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为梦想而活着 中级黑马   /  2014-4-10 20:45  /  1816 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

验证:2000以内的正偶数都能够分解为两个素数之和。(判定一个整数n是否
为素数就是要判定整数n能否被除1和它自身之外的任意自然数整除,若都不
能整除,则n 为素数。

用Java语言如何验证他的正确性呢?

3 个回复

倒序浏览
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;  //如果以上都没有返回则该数是素数
        }
}
回复 使用道具 举报 1 0
///....................................
回复 使用道具 举报
代码呢我和上面那哥们基本一样,就不重复了,细的说下思路:
为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解为两部分,然后判断出分解出的两个整数是否均为素数。若是,则满足题意;否则重新进行分解和判断。
程序中对判断是否为素数的算法进行了改进,对整数判断“用从2开始到该整数的一半”改为“2开始到该整数的平方根”。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马