Algorithm JAVA写算法 验证哥德巴赫猜想

来源:互联网 发布:c 查看dll源码 编辑:程序博客网 时间:2024/05/16 16:29

Algorithm JAVA写算法 验证哥德巴赫猜想

哥德巴赫猜想换成现代陈述为:任何一个大于5的整数都可以写成3个质数之和;另一个版本(欧拉):任何一个大于2的偶数都可以写成2个质数之和。
现在所说的哥德巴赫猜想一般都是置第二种,两个多世纪过去了,这一猜想即无法被证实也没有被推翻。


现在用java写算法,通过程序在4~100内验证这个猜想。


先获取4-100内所有偶数:

package algorithm;/** * Created by zhaoyong on 2016/5/19. * 哥德巴赫猜想 */public class geDeBaHeCaiXiang {    public static void main(String[] args) {        for (int i = 4; i <= 100; i = i + 2) {            System.out.print("4-100内所有偶数->" + i + "\n");        }    }}

然后需要将每一个数i,拆分成a+b(a < b)的形式,a的范围是2~i/2,因为如果a>i/2,那么a+b肯定大于i了。
如果a和b都是质数,就将其打印出来。
先写个打印的方法,方便输出

private static void print(Object s) {    System.out.print(s.toString() + "\n");}

判断一个大于2的数是不是质数

    //判断一个大于2的数是不是质数    private static boolean isPrime(int i) {        for (int j = 2; j < i - 1; j++) {            if (i % j == 0) {                return false;            }        }        return true;    }

这里面就不用b了,因为b就是i-a,那就写成i-a好了,如果a是质数,i-a是质数,那么就满足条件

完整代码

package algorithm;/** * Created by zhaoyong on 2016/5/19. * 哥德巴赫猜想 */public class geDeBaHeCaiXiang {    public static void main(String[] args) {        for (int i = 4; i <= 100; i = i + 2) {            for (int a = 2; a <= i / 2; a++) {                if (isPrime(a) && isPrime(i - a)) {                    print(i + "是两个质数之和 = " + a + "+" + (i - a));                    break;                }            }        }    }    //判断一个大于2的数是不是质数    private static boolean isPrime(int i) {        for (int j = 2; j < i - 1; j++) {            if (i % j == 0) {                return false;            }        }        return true;    }    //输出    private static void print(Object s) {        System.out.print(s.toString() + "\n");    }}

输出结果

4是两个质数之和 = 2+26是两个质数之和 = 3+38是两个质数之和 = 3+510是两个质数之和 = 3+712是两个质数之和 = 5+714是两个质数之和 = 3+1116是两个质数之和 = 3+1318是两个质数之和 = 5+1320是两个质数之和 = 3+1722是两个质数之和 = 3+1924是两个质数之和 = 5+1926是两个质数之和 = 3+2328是两个质数之和 = 5+2330是两个质数之和 = 7+2332是两个质数之和 = 3+2934是两个质数之和 = 3+3136是两个质数之和 = 5+3138是两个质数之和 = 7+3140是两个质数之和 = 3+3742是两个质数之和 = 5+3744是两个质数之和 = 3+4146是两个质数之和 = 3+4348是两个质数之和 = 5+4350是两个质数之和 = 3+4752是两个质数之和 = 5+4754是两个质数之和 = 7+4756是两个质数之和 = 3+5358是两个质数之和 = 5+5360是两个质数之和 = 7+5362是两个质数之和 = 3+5964是两个质数之和 = 3+6166是两个质数之和 = 5+6168是两个质数之和 = 7+6170是两个质数之和 = 3+6772是两个质数之和 = 5+6774是两个质数之和 = 3+7176是两个质数之和 = 3+7378是两个质数之和 = 5+7380是两个质数之和 = 7+7382是两个质数之和 = 3+7984是两个质数之和 = 5+7986是两个质数之和 = 3+8388是两个质数之和 = 5+8390是两个质数之和 = 7+8392是两个质数之和 = 3+8994是两个质数之和 = 5+8996是两个质数之和 = 7+8998是两个质数之和 = 19+79100是两个质数之和 = 3+97Process finished with exit code 0

这里输出的是a为最小值的时候i等于两个质数相加的结果,要是想输出所有的i等于两个质数相加,那么只要去掉main方法里面的break;就行了。
输出结果如下

4是两个质数之和 = 2+26是两个质数之和 = 3+38是两个质数之和 = 3+510是两个质数之和 = 3+710是两个质数之和 = 5+512是两个质数之和 = 5+714是两个质数之和 = 3+1114是两个质数之和 = 7+716是两个质数之和 = 3+1316是两个质数之和 = 5+1118是两个质数之和 = 5+1318是两个质数之和 = 7+1120是两个质数之和 = 3+1720是两个质数之和 = 7+1322是两个质数之和 = 3+1922是两个质数之和 = 5+1722是两个质数之和 = 11+1124是两个质数之和 = 5+1924是两个质数之和 = 7+1724是两个质数之和 = 11+1326是两个质数之和 = 3+2326是两个质数之和 = 7+1926是两个质数之和 = 13+1328是两个质数之和 = 5+2328是两个质数之和 = 11+1730是两个质数之和 = 7+2330是两个质数之和 = 11+1930是两个质数之和 = 13+1732是两个质数之和 = 3+2932是两个质数之和 = 13+1934是两个质数之和 = 3+3134是两个质数之和 = 5+2934是两个质数之和 = 11+2334是两个质数之和 = 17+1736是两个质数之和 = 5+3136是两个质数之和 = 7+2936是两个质数之和 = 13+2336是两个质数之和 = 17+1938是两个质数之和 = 7+3138是两个质数之和 = 19+1940是两个质数之和 = 3+3740是两个质数之和 = 11+2940是两个质数之和 = 17+2342是两个质数之和 = 5+3742是两个质数之和 = 11+3142是两个质数之和 = 13+2942是两个质数之和 = 19+2344是两个质数之和 = 3+4144是两个质数之和 = 7+3744是两个质数之和 = 13+3146是两个质数之和 = 3+4346是两个质数之和 = 5+4146是两个质数之和 = 17+2946是两个质数之和 = 23+2348是两个质数之和 = 5+4348是两个质数之和 = 7+4148是两个质数之和 = 11+3748是两个质数之和 = 17+3148是两个质数之和 = 19+2950是两个质数之和 = 3+4750是两个质数之和 = 7+4350是两个质数之和 = 13+3750是两个质数之和 = 19+3152是两个质数之和 = 5+4752是两个质数之和 = 11+4152是两个质数之和 = 23+2954是两个质数之和 = 7+4754是两个质数之和 = 11+4354是两个质数之和 = 13+4154是两个质数之和 = 17+3754是两个质数之和 = 23+3156是两个质数之和 = 3+5356是两个质数之和 = 13+4356是两个质数之和 = 19+3758是两个质数之和 = 5+5358是两个质数之和 = 11+4758是两个质数之和 = 17+4158是两个质数之和 = 29+2960是两个质数之和 = 7+5360是两个质数之和 = 13+4760是两个质数之和 = 17+4360是两个质数之和 = 19+4160是两个质数之和 = 23+3760是两个质数之和 = 29+3162是两个质数之和 = 3+5962是两个质数之和 = 19+4362是两个质数之和 = 31+3164是两个质数之和 = 3+6164是两个质数之和 = 5+5964是两个质数之和 = 11+5364是两个质数之和 = 17+4764是两个质数之和 = 23+4166是两个质数之和 = 5+6166是两个质数之和 = 7+5966是两个质数之和 = 13+5366是两个质数之和 = 19+4766是两个质数之和 = 23+4366是两个质数之和 = 29+3768是两个质数之和 = 7+6168是两个质数之和 = 31+3770是两个质数之和 = 3+6770是两个质数之和 = 11+5970是两个质数之和 = 17+5370是两个质数之和 = 23+4770是两个质数之和 = 29+4172是两个质数之和 = 5+6772是两个质数之和 = 11+6172是两个质数之和 = 13+5972是两个质数之和 = 19+5372是两个质数之和 = 29+4372是两个质数之和 = 31+4174是两个质数之和 = 3+7174是两个质数之和 = 7+6774是两个质数之和 = 13+6174是两个质数之和 = 31+4374是两个质数之和 = 37+3776是两个质数之和 = 3+7376是两个质数之和 = 5+7176是两个质数之和 = 17+5976是两个质数之和 = 23+5376是两个质数之和 = 29+4778是两个质数之和 = 5+7378是两个质数之和 = 7+7178是两个质数之和 = 11+6778是两个质数之和 = 17+6178是两个质数之和 = 19+5978是两个质数之和 = 31+4778是两个质数之和 = 37+4180是两个质数之和 = 7+7380是两个质数之和 = 13+6780是两个质数之和 = 19+6180是两个质数之和 = 37+4382是两个质数之和 = 3+7982是两个质数之和 = 11+7182是两个质数之和 = 23+5982是两个质数之和 = 29+5382是两个质数之和 = 41+4184是两个质数之和 = 5+7984是两个质数之和 = 11+7384是两个质数之和 = 13+7184是两个质数之和 = 17+6784是两个质数之和 = 23+6184是两个质数之和 = 31+5384是两个质数之和 = 37+4784是两个质数之和 = 41+4386是两个质数之和 = 3+8386是两个质数之和 = 7+7986是两个质数之和 = 13+7386是两个质数之和 = 19+6786是两个质数之和 = 43+4388是两个质数之和 = 5+8388是两个质数之和 = 17+7188是两个质数之和 = 29+5988是两个质数之和 = 41+4790是两个质数之和 = 7+8390是两个质数之和 = 11+7990是两个质数之和 = 17+7390是两个质数之和 = 19+7190是两个质数之和 = 23+6790是两个质数之和 = 29+6190是两个质数之和 = 31+5990是两个质数之和 = 37+5390是两个质数之和 = 43+4792是两个质数之和 = 3+8992是两个质数之和 = 13+7992是两个质数之和 = 19+7392是两个质数之和 = 31+6194是两个质数之和 = 5+8994是两个质数之和 = 11+8394是两个质数之和 = 23+7194是两个质数之和 = 41+5394是两个质数之和 = 47+4796是两个质数之和 = 7+8996是两个质数之和 = 13+8396是两个质数之和 = 17+7996是两个质数之和 = 23+7396是两个质数之和 = 29+6796是两个质数之和 = 37+5996是两个质数之和 = 43+5398是两个质数之和 = 19+7998是两个质数之和 = 31+6798是两个质数之和 = 37+61100是两个质数之和 = 3+97100是两个质数之和 = 11+89100是两个质数之和 = 17+83100是两个质数之和 = 29+71100是两个质数之和 = 41+59100是两个质数之和 = 47+53Process finished with exit code 0

换一种好看点的输出形式

public static void main(String[] args) {        for (int i = 4; i <= 100; i = i + 2) {            String str = "";            for (int a = 2; a <= i / 2; a++) {                if (isPrime(a) && isPrime(i - a)) {                    str = str + "=" + a + "+" + (i - a);                }            }            print(i + "是两个质数之和 " + str);        }    }

输出结果

4是两个质数之和 =2+26是两个质数之和 =3+38是两个质数之和 =3+510是两个质数之和 =3+7=5+512是两个质数之和 =5+714是两个质数之和 =3+11=7+716是两个质数之和 =3+13=5+1118是两个质数之和 =5+13=7+1120是两个质数之和 =3+17=7+1322是两个质数之和 =3+19=5+17=11+1124是两个质数之和 =5+19=7+17=11+1326是两个质数之和 =3+23=7+19=13+1328是两个质数之和 =5+23=11+1730是两个质数之和 =7+23=11+19=13+1732是两个质数之和 =3+29=13+1934是两个质数之和 =3+31=5+29=11+23=17+1736是两个质数之和 =5+31=7+29=13+23=17+1938是两个质数之和 =7+31=19+1940是两个质数之和 =3+37=11+29=17+2342是两个质数之和 =5+37=11+31=13+29=19+2344是两个质数之和 =3+41=7+37=13+3146是两个质数之和 =3+43=5+41=17+29=23+2348是两个质数之和 =5+43=7+41=11+37=17+31=19+2950是两个质数之和 =3+47=7+43=13+37=19+3152是两个质数之和 =5+47=11+41=23+2954是两个质数之和 =7+47=11+43=13+41=17+37=23+3156是两个质数之和 =3+53=13+43=19+3758是两个质数之和 =5+53=11+47=17+41=29+2960是两个质数之和 =7+53=13+47=17+43=19+41=23+37=29+3162是两个质数之和 =3+59=19+43=31+3164是两个质数之和 =3+61=5+59=11+53=17+47=23+4166是两个质数之和 =5+61=7+59=13+53=19+47=23+43=29+3768是两个质数之和 =7+61=31+3770是两个质数之和 =3+67=11+59=17+53=23+47=29+4172是两个质数之和 =5+67=11+61=13+59=19+53=29+43=31+4174是两个质数之和 =3+71=7+67=13+61=31+43=37+3776是两个质数之和 =3+73=5+71=17+59=23+53=29+4778是两个质数之和 =5+73=7+71=11+67=17+61=19+59=31+47=37+4180是两个质数之和 =7+73=13+67=19+61=37+4382是两个质数之和 =3+79=11+71=23+59=29+53=41+4184是两个质数之和 =5+79=11+73=13+71=17+67=23+61=31+53=37+47=41+4386是两个质数之和 =3+83=7+79=13+73=19+67=43+4388是两个质数之和 =5+83=17+71=29+59=41+4790是两个质数之和 =7+83=11+79=17+73=19+71=23+67=29+61=31+59=37+53=43+4792是两个质数之和 =3+89=13+79=19+73=31+6194是两个质数之和 =5+89=11+83=23+71=41+53=47+4796是两个质数之和 =7+89=13+83=17+79=23+73=29+67=37+59=43+5398是两个质数之和 =19+79=31+67=37+61100是两个质数之和 =3+97=11+89=17+83=29+71=41+59=47+53Process finished with exit code 0

好了,这样就写完了哥德巴赫猜想在100以内的验证了

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑光驱里放入光碟放不出来怎么办 黑暗之魂3太难了怎么办 苹果手机下载的游戏闪退怎么办 宝宝两岁了不怎么爱拉大便怎么办? 小狗脖子发硬疼的直叫怎么办 厨房里有很多小虫子围着鸡蛋怎么办 狗生小狗后几天不吃饭怎么办 还没满月的小兔子突然死了怎么办 宝宝小鸡被蚊子咬后肿得很大怎么办 不知道是哪知兔子下的小兔怎么办 兔子生完小兔不吃东西了怎么办 人工喂养七天的小羊拉希怎么办 仔兔出生3天吃过奶就尿怎么办 小兔子买回来两天不拉屎怎么办 大狗生了小狗把小狗咬死了怎么办 狗妈妈一直咬小狗的脐带怎么办 狗狗体内驱虫驱不干净怎么办 打老鼠脚被老鼠咬了怎么办 天正画的cad打开显示空白怎么办 苹果手机信息被拉进群聊怎么办 空调的控制线的报验资料怎么办 窗窗户罩子护栏上的瓦楞板怎么办 酸洗好的带钢容易返锈怎么办 化肥撤到小树苗上现在变黑了怎么办 尿素液烧的太慢了怎么办 天堂鸟肥料施多了黄叶了怎么办 死水塘养的鱼每天在死怎么办 北京的阿姆斯肥把苗都烧死了怎么办 纱窗被老鼠咬了个洞 怎么办 低电量模式下动态墙纸不能用怎么办 吃的包装袋执行标准错了怎么办 退换东西的时候外包装坏了怎么办 闲鱼买家以与描述不符退货怎么办 闲鱼买家申请退款又签收了怎么办 店铺买的手机是拆开过的怎么办 卖家以包装破损拒收快递怎么办 车辆迁出落户信封被自己拆开怎么办 快递签收了发现物品坏了怎么办 快递签收后发现货坏了怎么办 闲鱼退货有破损卖家要求赔偿怎么办 邮政快递收货后发现快递破损怎么办