問題概要
整数 が与えられる。 を 2 つの合成数の和で表わせ。
解法
4 以上の偶数が全て合成数であることを利用して解きます。 の奇偶によって、
- が偶数のとき、 は合成数(偶数である合成数ならなんでもよい)
- が奇数のとき、 は合成数(奇数である合成数ならよいが、これは 9 のみ)
です。従って、6 または 9 との和に分解すれば、どちらも合成数になります。
コード
readInt = ( readLn :: IO Int ) which a b f = if f then a else b main = do n <- readInt let m = which 6 9 $ even n printf "%d %d\n" m ( n - m )