哥德巴赫猜想

package math;
/*哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。请编写一个java程序验证1~100内哥德巴赫赫猜想的正确性,
 * 也就/是近似证明哥德巴赫猜想
 */
public class Guess {
 public static void main(String[] args){
  System.out.println("在1~100范围内,现在开始哥德巴赫猜想:");
  if(Testifty_Guess(1,100)){
   System.out.println("在1~100范围内,哥德巴赫猜想是正确的");
  }else{
   System.out.println("哥德巴赫猜想是错误的");
  }
 }

private static boolean Testifty_Guess(int low, int high) {
 // 判断1~100范围内的所有偶数是否符合哥德巴赫猜想,符合则返回true,反之则返回false
 int i,j=0;
 boolean flag=true;
 for(i=low;i<=high;i++)
  if(i%2==0&&i>2)//d 1~100之间选取大于2的偶数进行猜想测试
   if(isGoldbach(i)){
    j++;   //j用来控制输出格式,每行输出5个数据
    if(j==5){
     System.out.println();
     j=0;
    }
 }else{
  flag=false;
  break;
 }
 return flag;
}
public static boolean isGoldbach(int a){  //判断参数a是否符合哥德巴赫猜想
 int i;
 boolean flag=false;
 for(i=1;i<=a/2;i++){
  if(isPrime(i)&&isPrime(a-i)){   //根据试题分析中的表达式,传入相关的两个参数
   flag=true;
   System.out.print(a+"="+i+"+"+(a-i)+" ");
   break;//只要有一个符合条件的就可以退出循环,判断下一个偶数
  }
 }
 return flag;
}
public static boolean isPrime(int i){
 //判断参数i是否是素数,是则返回true反之则返回false
 int n;
 boolean flag=true;
 if(1==i){           //1本身不是素数,因此需把这个特殊的数字抛出
  flag = false;
  for(n=2;n<=i-1;n++)/*判断i是否是素数的一个方法是看2~i-1之间有其因子 (能被2整除),
       有则不上素数返回false,反之则返回true
       */
   if(i%n==0){
    flag=false;
    break;
 
   }
 
 }
 return flag;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值