2018/12/06 L1-028 判斷素數 Java

這題其實很簡單, 就是判斷素數, 可是, 這題將1也包括在測試點裏面, 這個是很奇怪的, 由於素數不是從2開始的嗎? 爲何要判斷1?我在這個測試點上花了好多的腦細胞~~~~~, 代碼以下:java

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main2 {

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.readLine());
        int[] ArrNum = new int[num];
        String[] YesOrNo = new String[num];
        for(int i=0; i<num; i++) {
            ArrNum[i] = Integer.parseInt(br.readLine());  // 用來接收輸入的要判斷的數字.
        }
        for(int i=0; i<num; i++) {
            if(PrimeNumber(ArrNum[i])) {
                YesOrNo[i] = "Yes";
            } else {
                YesOrNo[i] = "No";
            }
        }
        for(int i=0; i<num; i++) {
            System.out.println(YesOrNo[i]);
        }
    }
    public static boolean PrimeNumber(int num) {  // 這個判斷方法超時了.
        if( num == 1) {
            return false;
        }
        if( num == 2 || num == 3) {
            return true;
        }
        if( num%6 != 1 && num%6 != 5) {
            return false;
        }
        
        int tem = (int)Math.sqrt(num);
        for(int i=5; i<=tem; i+=6) {
            if( num%i == 0 || num %(i+ 2)==0) {
                return false;
            }
        }
        return true;
    }

}
相關文章
相關標籤/搜索