这题其实很简单, 就是判断素数, 但是, 这题将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; } }