import java.util.*; public class PrimeFactorJudger{ public static void main(String[] args){ //從執行時的輸入字串找出所有因數、判斷是否質數 for(String inputString:args){ if(isNumeric(inputString)){ int inputNumber = Integer.parseInt(inputString); printAllFactor(inputNumber); isPrime(inputNumber); }else{ System.out.println(inputString + " is not Numeric"); } } //找出100以內的質數 /* for(int i=1; i<=100; i++){ isPrime(i); } */ } public static void isPrime(int inputNumber){ try{ Queue<Integer> factors = findFactors(inputNumber); //factors = findFactors(inputNumber); if(factors.size() == 2){ System.out.println(inputNumber+ " is Prime"); }else{ System.out.println(inputNumber+ " is not Prime"); } }catch(Exception e){ System.out.println("Exception!"); } } public static void printAllFactor(int inputNumber){ System.out.print(inputNumber+ "的因數有: "); System.out.println(findFactors(inputNumber)); } public static Queue findFactors(int inputNumber){ Queue<Integer> factors = new LinkedList<>(); for(int i=1; i<=inputNumber; i++){ if(inputNumber%i == 0){ factors.add(i); } } return factors; } public static boolean isNumeric(String str){ return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal. } }
如何執行:
javac PrimeFactorJudger.java
java PrimeFactorJudger 參數們 e.g. java PrimeFactorJudger 13 100 20 39 abc