Golang 在两个区间内显示阿姆斯特朗数
阿姆斯特朗数,也称为自恋数,是一个等于其各个位数的数字的每个数字的幂之和的数。在这里,我们将展示在 Go 编程语言中如何打印出阿姆斯特朗数的不同方法。
方法 1:使用数学包
在这个示例中,我们将使用数学包中的不同函数来打印出给定限制之间的阿姆斯特朗数。
语法
func Pow(a, b float64) float64
pow()函数在math包中存在,用于将一个数字提升到另一个数字的指数。该函数以float64格式的两个数字作为参数,并通过进行ab运算返回结果。
func Log(x float64) float64
log()函数位于math包中,用于找到一个数字的自然对数。它以float64格式的参数作为要计算自然对数的数字,并以相同的格式返回最终结果。
步骤
- 步骤1 - 导入fmt和math包。
-
步骤2 - 开始main()函数。
-
步骤3 - 在main()函数内部初始化两个整数变量以保存数字。
-
步骤4 - 使用for循环迭代限制之间的每个数字。
-
步骤5 - 现在,逐个将数字的每个数字取出,并通过与第十位的数相乘将它们相加。
-
步骤5 - 打印输出。
示例
使用math包在两个范围内显示阿姆斯特朗数字的Go语言程序。
package main
import (
"fmt"
"math"
)
func main() {
var n int = 100
var m int = 1000
fmt.Println("Armstrong numbers between", n, "and", m, "are:")
fmt.Println()
for i := n; i <= m; i++ {
num := i
sum := 0
n := int64(math.Floor(math.Log10(float64(num))) + 1)
for ; num > 0; num /= 10 {
sum += int(math.Pow(float64(num%10), float64(n)))
}
if i == sum {
fmt.Printf("%d ", i)
}
}
}
输出
Armstrong numbers between 100 and 1000 are:
153 370 371 407
方法2:使用strconv包
在这个方法中,我们将使用strconv包来查找两个限制之间的阿姆斯特朗数。
语法
func Itoa(x int) string
Itoa() 函数在strconv包中,用于在基数为10时获取整数变量的字符串表示。该函数接受需要获取其字符串等价物的变量作为参数,并返回字符串表示,我们可以将其存储并在屏幕上打印出来。
func len(v Type) int
len() 函数用于获取任何参数的长度。它接受一个参数作为我们想要找到其长度的数据类型变量,并返回整数值,即变量的长度。
func Atoi(s string) (int, error)
Atoi()函数位于strconv包中,用于将给定进制的字符串值转换为整数。该函数接受一个字符串变量作为参数,返回该字符串的整数等价值以及一个错误变量。如果在执行相应的转换过程中出现问题,错误变量将具有一个值。
步骤
- 步骤1 - 首先,我们需要导入fmt和strconv包。
-
步骤2 - 然后,开始main()函数。在main()函数内初始化两个整数类型的变量以存储数字的上限和下限。
-
步骤3 - 打印这两个数字。
-
步骤4 - 使用for循环遍历这些数字之间的每个元素。
-
步骤5 - 使用strconv包的Itoa()函数将当前数字转换为字符串。
-
步骤6 - 使用len()函数获取该数字的长度。
-
步骤7 - 现在,调用pow()函数通过将数字与数字的10的幂相乘来求出数字的数字之和。
-
步骤8 - 将函数返回的值存储在一个变量中。
示例
使用strconv包在两个区间内显示阿姆斯特朗数的Go语言程序。
package main
import (
"fmt"
"strconv"
)
func main() {
var n int = 1000
var m int = 10000
fmt.Println("Armstrong numbers between", n, "and", m, "are:")
fmt.Println()
for i := n; i <= m; i++ {
num := strconv.Itoa(i)
sum := 0
n := len(num)
for _, digit := range num {
d, _ := strconv.Atoi(string(digit))
sum += pow(d, n)
}
if i == sum {
fmt.Printf("%d ", i)
}
}
}
func pow(a, b int) int {
res := 1
for i := 0; i < b; i++ {
res *= a
}
return res
}
输出
Armstrong numbers between 1000 and 10000 are:
1634 8208 9474
结论
我们成功地编译并执行了一个go语言程序,以显示两个区间之间的阿姆斯特朗数,并附带示例。这里我们取了两个示例。在第一个示例中,我们使用了math包中的函数来找到自恋数,而在第二个示例中,我们使用strconv包来实现结果。