Problem:
素数 II

素数というのは、1 よりも大きくそれ自身か 1 でしか割りきれない整数をいいます。例えば、2 は、2 と 1 でしか割り切れないので素数ですが、12 は、12 と 1 のほかに、2, 3, 4, 6 で割りきれる数なので素数ではありません。

整数 n を入力したとき、n より小さい素数のうち最も大きいものと、n より大きい素数のうち最も小さいものを出力するプログラムを作成してください。

Input

複数のデータセットが与えられます。各データセットに n (3 ≤ n ≤ 50,000) が１行に与えられます。

データセットの数は 50 を超えません。

Output

各データセットに対して、n より小さい素数のうち最大のものと、n より大きい素数のうち最小のものを１つのスペースで区切って１行に出力して下さい。

Sample Input

19
3517

Output for the Sample Input

17 23
3511 3527

Solution in JAVA (judge verdict: Accepted)

import java.util.*;

class Main {
	Scanner sc = new Scanner(System.in);


	public boolean isPrime(int n){
		if(n<2)return false;

		for(int i=2;i*i<=n;i++){
			if(n%i==0)return false;
		}
		return true;
	}

	public void run() {
		while (sc.hasNext()) {
			int val=sc.nextInt();
			int lessP=0;int greatP=0;
			for(int i=val-1;;i--){
				if(isPrime(i)){
					lessP=i;break;
				}
			}
			for(int i=val+1;;i++){
				if(isPrime(i)){
					greatP=i;break;
				}
			}
			ln(lessP+" "+greatP);
		}
	}


	public static void main(String[] args) {
		new Main().run();
	}

	public static void pr(Object o) {
		System.out.print(o);
	}

	public static void ln(Object o) {
		System.out.println(o);
	}

	public static void ln() {
		System.out.println();
	}
}