2018/12/06 L1-028 判断素数 Java

这题其实很简单, 就是判断素数, 但是, 这题将1也包括在测试点里面, 这个是很奇怪的, 因为素数不是从2开始的吗? 为什么要判断1?我在这个测试点上花了好多的脑细胞~~~~~, 代码如下:

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;
    }

}

猜你喜欢

转载自www.cnblogs.com/huangZ-H/p/10078862.html
今日推荐