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 Main { 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(); } }
|