//埃氏筛法
//C++版代码
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<bool> isPrime(1001, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= 1000; i++) {
if (isPrime[i]) {
for (int j = i; j * i <= 1000; j++) isPrime[i * j] = false;
}
}
int n;
while (cin >> n) {
if (isPrime[n]) cout << "yes" << endl;
else cout << "no" << endl;
}
return 0;
}
//Java版代码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean[] isPrimes = new boolean[10001];
Arrays.fill(isPrimes, 2, 10001, true);
for (int i = 2; i * i <= 10000; i++) {
if (isPrimes[i]) {
for (int j = i; j * i <= 10000; j++) isPrimes[j * i] = false;
}
}
while (sc.hasNextInt()) {
int n = sc.nextInt();
if (isPrimes[n]) System.out.println("yes");
else System.out.println("no");
}
}
}
//欧拉筛法
//C++版代码
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> primes;
bool isPrime[10001];
for (int i = 2; i <= 10000; i++) isPrime[i] = true;
for (int i = 2; i <= 10000; i++) {
if (isPrime[i]) primes.push_back(i);
for (int j = 0; j < primes.size() && i * primes[j] <= 10000; j++) {
isPrime[i * primes[j]] = false;
if (i % primes[j] == 0) break;
}
}
int n;
while (cin >> n) {
if (isPrime[n]) cout << "yes" << endl;
else cout << "no" << endl;
}
return 0;
}
//Java版代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> primes = new ArrayList<>();
boolean[] isPrimes = new boolean[10001];
Arrays.fill(isPrimes, 2, 10001, true);
for (int i = 2; i <= 10000; i++) {
if (isPrimes[i]) primes.add(i);
for (int j = 0; j < primes.size() && i * primes.get(j) <= 10000; j++) {
isPrimes[i * primes.get(j)] = false;
if (i % primes.get(j) == 0) break;
}
}
while (sc.hasNextInt()) {
int n = sc.nextInt();
if (isPrimes[n]) System.out.println("yes");
else System.out.println("no");
}
}
}