阿姆斯特朗数是一个神奇的数字,其中每个数字的幂次方(幂次为数字的位数)之和等于该数字本身。它也被称为自恋数或完美加数。
一个 N 位整数可以被称为阿姆斯特朗数,如果它满足以下条件:
abcd...=an+bn+cn+dn+...
其中 a,b,c,d... 是数字的各个位,n 是数字的位数。
在我们的博客 阿姆斯特朗数基础知识 中,我们对阿姆斯特朗数的概念有详细的描述。它不会让你失望,肯定会帮助你清楚地理解这些数字。
通常,我们寻找阿姆斯特朗数程序来检查一个 3 位数字是否是阿姆斯特朗数,即,数字的各位立方和是否与数字本身相同。因此,我们的 R 程序集合中包含了 3 位阿姆斯特朗数程序,你也可以参考它。
这里我们正在检查一个阿姆斯特朗数,没有任何位数限制。
如果一个数字的每个数字的 n 次幂之和等于该数字本身,那么这个数字就可以被称为阿姆斯特朗数,其中该数字有 n 位。我们需要计算每个数字的 n 次幂之和。
例如,以 371 为例,371 的数字是 3、7 和 1。每个数字的立方如下所示。
33 = 3 x 3 x 3 = 27
73 = 7 x 7 x 7 = 343
13 = 1 x 1 x 1 = 1
那么数字的立方和 = 27+343+1
= 371
下面是在 R 程序中读取值并检查它是否是阿姆斯特朗数的步骤。在此 R 程序中,我们通过使用 readLine() 函数中的“prompt”向用户提供适当的消息,将用户的输入接受到 num 中。查找数字中有多少位并将其保存到 n_digit 中,因为我们只需要根据此值计算幂。此外,将读取的数字的整数值保存到 temp 中。
现在使用 while 循环提取每个数字,并找到每个数字的幂(幂次为数字的位数 n_digit)之和。计算后,检查该和是否等于给定数字本身;如果是,那么它就是阿姆斯特朗数,否则就不是阿姆斯特朗数。
步骤 1:向用户提示适当的消息,使用 readline() 将用户输入存入变量 num 中
步骤 2:将 n_digit 设置为输入的数字的位数
步骤 3: 初始化 sum=0 并将 num 的值保存到 temp
步骤 4:使用 while 循环查找每个数字的立方和,条件是 temp > 0
步骤 4:将 sum 与 num 进行比较,如果它们相等,则 print 该数字是阿姆斯特朗数,否则不是。
num = readline(prompt="Enter a number: ") # read user input
n_digit <- nchar(num) # nchar() gives count of characters of string num
# initialize sum,temp
sum = 0
temp = as.integer(num)
# find the sum of the cube of each digit
while(temp > 0) {
digit = temp %% 10
sum = sum + (digit ^ n_digit)
temp = floor(temp / 10)
}
if(num == sum) {
print(paste(num, "is an Armstrong number"))
} else {
print(paste(num, "is not an Armstrong number"))
}
"Enter a number: " 9474 "9474 is an Armstrong number"