AOJ 0032

D言語を使う練習として解いた
D言語っぽいことはやっていない

import std.stdio;
import std.array;
import std.conv;

void main(){
	bool[60000] p;
	p[0] = false;
	p[1] = false;
	for(int i = 0; i < 60000; i++) p[i] = true;
	for(int i = 2; i * i < 60000; i++){
		if(p[i]){
			for(int j = i + i; j < 60000; j += i){
				p[j] = false;
			}
		}
	}
	int[60000] minP, maxP;
	for(int i = 3; i < 60000; i++){
		if(p[i-1])
			minP[i] = i - 1;
		else
			minP[i] = minP[i-1];
	}
	maxP[59999] = 1000000;
	for(int i = 59998; i > 2; i--){
		if(p[i+1])
			maxP[i] = i + 1;
		else
			maxP[i] = maxP[i+1];
	}
	for(;;){
		string[] str = split(readln());
		if(stdin.eof() || str.length == 0) break;
		int n = to!int(str[0]);
		writeln(minP[n], " ", maxP[n]);
	}
}