验证哥德巴赫猜想:任意一个大于6的偶数,都能分解成2个质数的和。
代码:
package gold1; import java.util.*; public class TestGoldBach{ public static void main(String[] args){ //首先创建一个扫描仪 Scanner sc=new Scanner(System.in); System.out.print("请输入一个大于6的偶数:"); //写一个do while循环,如果输入错误继续输入 int n; //在循环外先定义一个变量n do{ n=sc.nextInt(); if( n%2!=0 || n<=6){ System.out.print("输入错误,请重新输入:"); } }while(n%2!=0 || n<=6); //确定n正确以后,把n分解成2个数并调用判断质数的函数 for(int i=2;i<=n/2;i++){ //i<=n/2 是为了不让遍历到的i和n-i的两个值发生重复 if( isPrime(i)&&isPrime(n-i) ){ System.out.print(n+"="+i+"+"+(n-i)); } } } //写一个判断质数的函数 public static boolean isPrime(int n){ for(int i=2;i<=n/2;i++){ //判断一个质数要判断,它能不能再除尽某一个数 if(n%i==0) return false; //如果除以大于它二分之一的数必然除不尽的 } return true; //返回给调用者一个布尔值 } }
注:①一个质数是除了1和它本身没有别的因子的数。质数不包括1和它本身
②<n/2 的目的是避免重复
本文出自 “ChristianWyld's Blog” 博客,请务必保留此出处http://wyld123.blog.51cto.com/12619448/1903225
原文:http://wyld123.blog.51cto.com/12619448/1903225