r - 在 R 中创建边界
问题描述
我正在尝试在 R 中创建一个函数,该函数将要求用户输入一个数字,然后说明它是否是 Armstrong 数字,然后继续要求用户输入上下边界,然后 R 将显示该区间内的阿姆斯壮数。
这是我到目前为止的代码:
Armstrong <- function() {
num <- as.integer(readline(prompt="Enter a number: "))
sum <- 0
temp <- num
while(temp > 0) {
digit <- temp %% 10
sum <- sum + (digit ^ 3)
temp <- floor(temp / 10)
}
我不确定如何修复该函数,以便它输入下限和上限,然后在该间隔中显示阿姆斯壮数字字符串。
任何帮助将不胜感激。
解决方案
这是一个答案,它使用了Armstrong 数的更一般定义,即等于其数字之和的数字,每个数字都被提高到数字的数量的幂:
Armstrong <- function(n){
digits <- as.numeric(unlist(strsplit(as.character(n),'')))
k <- length(digits)
n == sum(digits^k)
}
要查找给定范围内的所有此类数字:
Armstrong.inrange <- function(a,b){
nums <- a:b
nums[which(sapply(nums,Armstrong))]
}
例如:
> Armstrong.inrange(0,10000)
[1] 0 1 2 3 4 5 6 7 8 9 153 370 371 407 1634
[16] 8208 9474
这与上面链接的维基百科文章中的部分列表一致。
推荐阅读
- go - 如何使 Go 测试与文件系统一起工作
- javascript - 如何修复 importnode 的 IE 兼容性问题
- c# - 如何使用在命令行安装期间作为参数传递的值从 wix 自定义操作更新 appsettings.json?
- mysql - 带有 COUNT(DISTINCT) 的 mySQL 窗口函数
- java - 如何修复嵌套的?
- .net - 如何访问附加了属性的参数?
- docker - docker-compose: varnish+apache2 返回 503 错误`Backend fetch failed`
- full-text-search - 在 ClickHouse 中搜索文本时内存不足
- azure-cosmosdb - CosmosDb 和 RU 用于同一查询
- flutter - 应用再次启动时如何使用共享偏好打开特定屏幕