Golang 如何检查两个整数之间的阿姆斯特朗数
在本教程中,我们将编写并解释查找两个整数之间的阿姆斯特朗数的代码。阿姆斯特朗数是一个数字,它的所有数字的立方之和等于数字本身。
例如,153是一个数字,如下图所示
算法
- 第1步 – 首先,我们要声明我们必须找到阿姆斯特朗数字之间的数字。
-
第2步 – 现在,我们接受用户输入的数字,我们必须在这些数字之间找到阿姆斯特朗数字。
-
第3步 – 从第一个数字到最后一个数字运行for循环,并调用函数来检查当前数字是否是阿姆斯特朗数字,如果是,则打印该数字。
例子
时间复杂度
O(1) – 时间复杂度是恒定的,因为无论输入什么,程序都需要正常的时间。
空间复杂度
O(1) – 程序中的变量是静态的,所以空间复杂性也是恒定的。
代码
输出
代码的描述
- var number1, number2 int32 – 这行代码声明了两个int32变量。在它们之间,我们必须找到所有的阿姆斯特朗数字。
-
fmt.Scanln(<number1)和fmt.Scanln(<number2)- 这里我们从用户那里获取输入。
-
for num := number1; num <= number2; num++ {} – 这个for是从number1到number2运行。
-
if isArmstrongNumber(num) {} – 在这个if条件中,isArmstrongNumber()函数被调用并传递参数num,即for循环的当前索引。如果条件是检查isArmstrongNumber()函数的返回值。如果该值为真,我们将打印该数字。
-
func isArmstrongNumber(num int32) bool {} – 这就是isArmstrongNumber()函数。它由一个数据类型为int32的num参数组成,其返回类型为bool。
- var sum int32 = 0 – 这里我们声明的是int32类型的sum变量,它将存储数字中每个数字的立方体之和。
-
var tempNum int32 = num – 声明int32类型的tempNum变量,它将被num值初始化。我们将对tempNum进行算术运算,这就是为什么我们不直接对num变量进行这些算术运算的原因,这些变量将在后面与sum进行比较。
-
for tempNum != 0 {} – 这个for循环一直运行到tempNum变成0。
-
currDigit := tempNum % 10 – 我们通过应用10的%来获取当前数字的最后一位,并将其存储在currDigit中。
-
sum = sum + (currDigit * currDigit * currDigit) – 将currDigit的立方体加入sum变量中。
-
tempNum = tempNum / 10 – 将tempNum除以10,这样最后一位数字就会从数值中删除。
-
if sum == num {} – 最后,我们将sum与数字进行比较,并返回true或false。
逻辑解释
数字是阿姆斯特朗
假设我们有一个数字371,我们必须检查这个数字是否是阿姆斯特朗。
- 通过做% – 371 % 10 = 1来获取最后一个数字。
和 = 0 + (111) -> 和 = 1
数值 -> 371 /10 = 37
- 通过做%-37%10=7来取最后一个数字
和 = 1 + (777) -> 和 = 344
数值 -> 37 /10 = 3
- 通过做% – 3 % 10 = 3来取最后一个数字
和 = 344 + (333) -> 和 = 371
数值 -> 3 /10 = 0
正如你所看到的,和等于初始数字,这就是为什么371是一个阿姆斯特朗数字。
数字不是阿姆斯特朗的
假设我们有一个数字251,我们必须检查这个数字是否是阿姆斯特朗。
- 通过做%-251%10=1来取最后一个数字
和=0+(111)->和=1
Num -> 251 /10 = 25
- 通过做%-25%10=5来取最后一个数字
和 = 1 + (555) -> 总数 = 126
数值 -> 25 /10 = 2
- 通过做% – 2 % 10 = 2来取最后一个数字
总和=126 + (222) -> 总和=134
数值 -> 2 /10 = 0
总结
这就是关于Golang代码的全部内容,用来寻找两个数字之间的阿姆斯特朗数字。要了解更多关于Go的知识,你可以探索这些教程。
这是所有关于Golang的代码,用于查找两个数字之间的阿姆斯特朗数字。