Problem 124

nの素因数の積をrad(n)とする.例えばrad(504) = 2*3*7 = 42である.
ある範囲について求めたrad(n)を,rad(n)を第1キー,nを第2キーとしてソートする.このときソート結果のk番目にあるnの値をE(k)とする.例えば1≦n≦10についてrad(n)を求めこの条件でソートした場合,E(4)=8,E(6)=9となる.
1≦n≦100000についてソートしたときのE(10000)を求めよ.
何のひねりもないただのbrute forceだけど解けてしまった.16.5秒かかったけど.これは単にgmpのfactorizeが優秀なだけではないか.

library(gmp)
get.rad <- function(n) prod(unique(as.numeric(factorize(n))))
## rad list
limit <- 1e5
rad.list <- sapply(1:limit, get.rad)
names(rad.list) <- 1:limit
names(sort(rad.list)[1e4])