Go語言程式:顯示兩個區間之間的阿姆斯特朗數
阿姆斯特朗數,也稱為自戀數,是一個等於其自身數字的每個數字的冪之和的數字。在這裡,我們將展示在 Go 程式語言中列印阿姆斯特朗數的不同方法。
方法一:使用 Math 包
在這個例子中,我們將使用 Math 包中不同的函式來列印指定範圍內的阿姆斯特朗數。
語法
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** - 現在,一次取數字的每個數字,並將它們相加,方法是用 10 的冪次方乘以它們。
**步驟 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
方法二:使用 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 包來實現結果。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP