課堂線上Java程式設計 哥德巴赫猜想
阿新 • • 發佈:2019-01-01
偶數分解
歌德巴赫猜想:任何一個大於六的偶數可以拆分成兩個質數的和,打印出所有的可能
輸入n為偶數,輸出n的所有分界可能
如輸入
100
輸出:
100=3+97
100=11+89
100=17+83
100=29+71
100=41+59
歌德巴赫猜想:任何一個大於六的偶數可以拆分成兩個質數的和,打印出所有的可能
輸入n為偶數,輸出n的所有分界可能
如輸入
100
輸出:
100=3+97
100=11+89
100=17+83
100=29+71
100=41+59
100=47+53
package javatest010; import java.util.Scanner; /* * 偶數分解 歌德巴赫猜想:任何一個大於六的偶數可以拆分成兩個質數的和,打印出所有的可能 輸入n為偶數,輸出n的所有分界可能 如輸入 100 輸出: 100=3+97 100=11+89 100=17+83 100=29+71 100=41+59 100=47+53 */ public class GoldbachConjecture { public boolean IsPrime(int num) { for(int i=2;i<=Math.sqrt(num);i++) { if(num%i==0) return false; } return true; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("請輸入任一大於六的偶數:"); Scanner in=new Scanner(System.in); int EvenNum; int loop=3; EvenNum=in.nextInt(); while(EvenNum<=6||EvenNum%2!=0) { System.out.println("請輸入任一大於六的偶數:"); EvenNum=in.nextInt(); } while(loop<=EvenNum/2) { GoldbachConjecture gold=new GoldbachConjecture(); if(gold.IsPrime(loop)&&gold.IsPrime(EvenNum-loop)) { System.out.printf("%d=%d+%d\n", EvenNum,loop,EvenNum-loop); } loop+=2; } in.close(); } }