质数检测 v2

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1186

给出1个正整数N,检测N是否为质数。如果是,输出”Yes”,否则输出”No”。

Input

输入一个数N(2 <= N <= 10^30)

Output

如果N为质数,输出”Yes”,否则输出”No”。

Input示例

17

Output示例

Yes

分析:
我才发现 BigInteger 有 isProbablePrime 这种方法,已经实现好了的 Rabin Miller 算法,简直就是作弊……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.math.BigInteger;

public class {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
BigInteger n = new BigInteger(in.readLine());
if (n.isProbablePrime(9)) {
out.println("Yes");
} else {
out.println("No");
}
out.flush();
}
}