[Java] 找因數、判斷質數

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

作者

RongSon

Graduate Student of CCU COMM Game Development, Network Communication, macOS/Ubuntu/Android, Arduino/Raspberry Pi/Intel Edison, Java/Python/C/C++

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *