Problem:
Score: 300 points

Problem Statement

Find the minimum prime number greater than or equal to X.

Notes

A prime number is an integer greater than 1 that cannot be evenly divided by any positive integer except 1 and itself.

For example, 2, 3, and 5 are prime numbers, while 4 and 6 are not.

Constraints

2 \le X \le 10^5

All values in input are integers.

Input

Input is given from Standard Input in the following format:

X

Output

Print the minimum prime number greater than or equal to X.

Sample Input 1

20

Sample Output 1

23

The minimum prime number greater than or equal to 20 is 23.

Sample Input 2

2

Sample Output 2

2

X itself can be a prime number.

Sample Input 3

99992

Sample Output 3

100003

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <iostream>
#include <string>
#include <stdio.h>
#include <cmath>
#include <cfloat>
#include <algorithm>
#include <functional>
#include <numeric>
#include <vector>
using namespace std;

const double PI=acos(-1);

int main(){
    int x;
    cin >> x;

    const int max = 100004;
    int l[max];
    for(int i = 0; i < max; i++){
        l[i] = i;
    }
    for(int i = 0; i < max; i++){
        if(l[i] == -1) continue;
        if(i == 0 || i == 1){
            l[i] = -1;
            continue;
        }
        for(int j = i + 1; j < max; j++){
            if(l[j] == -1) continue;
            if(l[j]%l[i]==0) l[j] = -1;
        }
    }

    for(int i = x; i < max; i++){
        if(l[i] != -1){
            cout << l[i] << endl;
            break;
        }
    }

    return 0;
}