歌德巴赫猜想的近似证明 歌德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和,
请编写一个Java程序,验证1~100内歌德巴赫猜想的正确性。
自己写的一个小程序,代码可能不够简洁,如有错误,请大家指正一下:
import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; /** * 歌德巴赫猜想的近似证明 歌德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和, * 请编写一个Java程序,验证1~100内歌德巴赫猜想的正确性。 * @author scywxx * @version 1.0 * */ public class Test9 { public static void main(String[] args) { //1 任何一个大于2的偶数都能表示为两个素数之和 for(int i = 4;i<=100;i+=2) { List<Integer> list=method2(i); method1(list,i); } } /** * 统计这个偶数的所有素数按顺序保存在一个List中 * 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除数 * @param m 表示这个整数 */ public static List<Integer> method2(int m) { List<Integer> list=new ArrayList<Integer>(); for(int i =2;i<=m-1;i++)//判断m这个偶数中2~m-1中那些是素数 { //判断 i 能否被2到i-1整除 int j; for(j=2;j<=i-1;j++) { if(i % j == 0) { break; } } //判断循环次数等于i,是素数 if(j == i) { //把素数保存在List中 list.add(i); } } System.out.print(m+"这个偶数中的素数有:"); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)+" "); } System.out.println(); return list; } /** * 算出任何一个大于2的偶数都能表示为两个素数之和 * 表示出来 * @param list 表示存储这个偶数的所有素数的集合 * @param m 表示这个偶数 */ public static void method1(List<Integer> list,int m) { for(int j =1 ;j<=list.size()-1;j++)//控制相隔的距离 每次计算的是素数与素数相隔的距离 { for(int n = 0;n<list.size();n++) { //判断是否越界 if(n+j >= list.size()) { break; } //判断一下素数本身相加是否等于这个偶数 if(list.get(n)*2 == m) { System.out.println(m+"这个偶数可以表示为:"+list.get(n)+"和"+list.get(n)+"相加"); } if(list.get(n+j) == m) { System.out.println(m+"这个偶数可以表示为:"+list.get(n)+"和"+list.get(n)+"相加"); } //将相隔的距离的素数相加是否等于这个偶数 if(list.get(n)+list.get(n+j)== m) { System.out.println(m+"这个偶数可以表示为:"+list.get(n)+"和"+list.get(n+j)+"相加"); } } } } }
运行的结果:
时间: 2024-10-18 01:57:32