R 程序检查 3 位阿姆斯特朗数


2023 年 2 月 4 日, 学习 eTutorial
4092

什么是阿姆斯特朗数?

阿姆斯特朗数是指一个数字,其中该数字每个数字的幂(数字的位数)之和等于该数字本身。一个具有 n 位的整数可以称为阿姆斯特朗数,如果它满足以下条件:

abcd...=an+bn+cn+dn+... 

其中,

  • a,b,c,d... 是数字
  • n 是数字的位数

如何编写 R 程序来检查给定的 3 位数是否为 阿姆斯特朗数?

一个三位数如果其每个数字的立方之和等于该数字本身,则可以称为阿姆斯特朗数。例如,以 153 为例,153 的数字是 1、5 和 3。每个数字的立方 如下所示:

  • 13 = 1 x 1 x 1 = 1
  • 53 = 5 x 5 x 5 = 125
  • 33 = 3 x 3 x 3 = 27

那么立方之和:1 + 125 + 27 = 153 所以它是一个阿姆斯特朗数。

在此 R 程序中,我们通过 'prompt' 和 readLine() 函数向用户提供适当的消息,接受用户输入的 3 位数到 num 变量中。使用 while 循环提取每个数字并计算每个数字的立方之和。计算后,检查总和是否等于给定的数字本身;如果是,则为阿姆斯特朗数,否则不是。

算法

步骤 1:通过使用 readline() 将用户输入到变量 num 中,向用户显示适当的消息。

步骤 2:初始化 sum=0 并将 temp = num

步骤 3:使用 while 循环和条件 temp > 0 来计算每个数字的立方之和。

  • 使用模 10 操作分割数字的各位。
  • 将该数字的立方与之前的数字相加。
  • 使用除以 10 的操作移除该数字并取剩余的数字。

步骤 4:将 sumnum 进行比较,如果相等,则 print 该数字是阿姆斯特朗数,否则不是。


为了更深入地理解这个概念,我们向您推荐我们的博客 阿姆斯特朗数基础,相信会对您有很大帮助。


我们还建议您查看这个相关的 R 程序,检查 n 位数是否为阿姆斯特朗数 

R 源代码

                                          num = as.integer(readline(prompt="Enter a number: "))
# initialize sum
sum = 0
# find the sum of the cube of each digit
temp = num
while(temp > 0) {
    digit = temp %% 10
    sum = sum + (digit ^ 3)
    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: 230
[1] "230 is not an Armstrong number"

Enter a number: 370
[1] "370 is an Armstrong number"