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
- Algorithm JAVA写算法 验证哥德巴赫猜想
- java程序验证哥德巴赫猜想
- 写一个函数验证哥德巴赫猜想
- VC++验证哥德巴赫猜想
- 验证哥德巴赫猜想
- 哥德巴赫猜想初步验证、、、、
- 验证“哥德巴赫猜想”
- 验证 哥德巴赫猜想
- 验证哥德巴赫猜想
- 验证哥德巴赫猜想
- 验证哥德巴赫猜想-C
- 验证哥德巴赫猜想
- 验证哥德巴赫猜想
- 58-验证哥德巴赫猜想
- 编程验证哥德巴赫猜想
- 验证哥德巴赫猜想
- 验证哥德巴赫猜想
- 验证“哥德巴赫猜想”
- 13.4 获得验证码
- 图像拼接
- Oracle 创建带时间戳的表
- <button> 和 input button的对比(实实在在的被坑了一把!)
- JRE与JVM
- Algorithm JAVA写算法 验证哥德巴赫猜想
- linux密码生成
- 表情符号过滤
- Cocos的动作系统以及自定义Action
- 13.5 自定义线程
- 关于SpringMVC返回date的格式问题
- .what is difference between NSNotification and protocol? 通知和协议的不同之处?
- apache activemq start Address already in use
- Android Drawable Resources系列5:<level-list>