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 C (judge verdict: Accepted)

#include <stdio.h>

int min_p(int n); //nより小さい素数のうち最大のモノを返す
int max_p(int n); //nより大きい素数のうち最小のモノを返す

int main(void)
{
    int n;

    while (scanf("%d", &n) != EOF)
    {
        printf("%d %d\n", min_p(n), max_p(n));
    }
    return (0);
}
int min_p(int n)
{
    int i,j;
    int x;
    int flag;

    flag = 0;

    for (i = 2; i < n; i++){
        flag = 0;
        for (j = 2; j < i; j++){
            if (i % j == 0 && i != j){
                flag = 1;
                 break;
            }
        }
        if (flag == 0){
            x = i;
        }

    }
    return (x);

}
int max_p(int n)
{
    int i,j;
    int x;
    int flag;
    
    i = n + 1;
    while (1){
        flag = 0;
        for (j = 2; j < i; j++){
            if (i % j == 0 && i != j){
                flag = 1;
                 break;
            }
        }

        if (flag == 0){
            x = i;
            break;
        }
        i++;

    }
    return (x);
}