Now we will learn the Number Theory in ACM.
This article is about how to judge a prime number quickly.
Problem in AcWing
Normal thinking
for (int i = 2; i < (n >> 1); i++)
if (n % i == 0) return false;
return true;
But It’s too slow.
The Proof of theory
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(System.out);
static int n;
public static void main(String[] args) throws IOException {
String s[] = br.readLine().split(" ");
n = Integer.parseInt(s[0]);
while (n-- > 0) {
s = br.readLine().split(" ");
int t = Integer.parseInt(s[0]);
if (t == 1) pw.println("No");
else if (check(t)) pw.println("Yes");
else pw.println("No");
}
pw.flush();
br.close();
}
public static boolean check(int x) {
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0) return false;
}
return true;
}
}