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]); } }