如果该数字的每个数字的立方的总和等于该数字本身,则该数字称为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/