如果该数字的每个数字的立方的总和等于该数字本身,则该数字称为Armstrong Number

例:


153 = 1 + 5^3 + 3^3
...所以153是阿姆斯特朗编号。
142 != 1 + 4^3 + 2^3
...因此142不是Armstrong号码。


有人可以帮我为R中的所有3位阿姆斯壮数字编写代码吗?

最佳答案

使用?strsplit的快速而肮脏的解决方案:

armstrong <- function(x) {
  tmp <- strsplit(as.character(x), split="")
  cubic <- sapply(tmp, function(y)sum(as.numeric(y)^3))
  return(cubic == x)
}


例如。:

armstrong(c(153, 142))
# [1] TRUE FALSE

# find all 3 digit numbers:
s <- 100:999
s[armstrong(s)]
# [1] 153 370 371 407
# @CarlWitthoft: wikipedia was right ;)

关于r - R中的阿姆斯特朗编号程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18786432/

10-11 04:18