在R中创建边界
我试图在R中创建一个函数,要求用户输入一个数字,然后说明它是否为阿姆斯特朗数字,然后继续要求用户输入上下限,然后R将在该间隔内显示阿姆斯特朗数字 这是我目前掌握的代码:在R中创建边界,r,R,我试图在R中创建一个函数,要求用户输入一个数字,然后说明它是否为阿姆斯特朗数字,然后继续要求用户输入上下限,然后R将在该间隔内显示阿姆斯特朗数字 这是我目前掌握的代码: Armstrong <- function() { num <- as.integer(readline(prompt="Enter a number: ")) sum <- 0 temp <- num while(temp > 0) { digit <- temp %
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也许以下内容符合您的要求。
该函数现在接受两个参数。然后,它使用sapply
循环调用一个内部函数arms
,该函数完成所有工作。
请注意,键盘输入使用软件包lava
的功能wait
。您需要首先使用install.packages(“lava”)
安装它
Armstrong这里有一个答案,它使用了一个更一般的定义,即一个数字等于其数字之和,每个数字都被提升为数字的幂:
Armstrong <- function(n){
digits <- as.numeric(unlist(strsplit(as.character(n),'')))
k <- length(digits)
n == sum(digits^k)
}
这与上面链接的维基百科文章中的部分列表一致。您的函数中有一个递归调用sapply(Lnum:Unum,Armstrong)
为Lnum:Unum
中的每个i
调用Armstrong(i)
。但是,您的Armstrong
函数不接受参数,因此会出现错误。我不知道如何计算Armstrong数,但您的函数必须这样开始:Armstrong为什么要将指数固定在3
?这只适用于3位数的阿姆斯特朗数字。此外,您的单一函数方法(提示用户输入和验证条件)不是一个好的设计。您的函数只需检查数字是否为Armstrong。然后编写使用此函数的其他函数,例如提示用户输入或检查给定范围内的所有数字。@JohnColeman我同意你的说法,但我必须在一个函数中完成所有操作。一个阿姆斯特朗数等于它的数字立方的和。我能在网上找到的定义是,如果一个数等于提升到等于位数的幂次方的数字之和,那么这个数就是阿姆斯特朗。可能您的讲师使用的是非标准定义。我需要能够键入“Armstrong()”,然后生成“输入一个数字:”,然后声明“是Armstrong”或“不是Armstrong”。然后,另一个提示必须要求输入“上边界”和“下边界”,然后在该边界中生成一个由用户输入的阿姆斯特朗数字字符串——所有这些数字都在一个范围内function@VPedlar看看是不是这个。
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