求这样一个三位数,该三位数等于其每位数字的阶乘之和。
即 abc = a! + b! + c!
下面是实现的代码,但感觉太繁琐,有没有简化的方法。
<br />
a <- 100:999<br />
b <- data.frame(x=(a%/%100)%%10,y=(a%/%10)%%10,z=a%%10)<br />
d1 <- do.call(rbind,lapply(1:900,function(i) prod(b$x[i]:1)))<br />
d2 <- do.call(rbind,lapply(1:900,function(i) prod(b$y[i]:1)))<br />
d3 <- do.call(rbind,lapply(1:900,function(i) prod(b$z[i]:1)))<br />
s <- as.data.frame(cbind(d1,d2,d3))<br />
ss <- data.frame(x=a,y=rowSums(s))<br />
ss[which(ss$x==ss$y),]<br />
x y<br />
46 145 145<br />
#即145 = 1! + 4! +5!<br />
</p>