Go語言演算法:水仙花與自冪數
阿新 • • 發佈:2019-01-04
判斷水仙花數
func IsNarcissistic(n int) bool {
//153
a := float64(n / 100)
b := float64(n % 100 / 10)
c := float64(n % 10)
return int(math.Pow(a, 3)+math.Pow(b, 3)+math.Pow(c, 3)) == n
}
數位分解
/* 對任意整數,分解所有數位,返回[]int */ func SplitInt(n int) (numbers []int) { numbers = make([]int, 0) nStr := strconv.Itoa(n) length := len(nStr) //12345 for i := length; i > 0; i-- { iFloat := float64(i) number := n % int(math.Pow(10, iFloat)) / int(math.Pow(10, iFloat-1)) numbers = append(numbers, number) } return }
判斷自冪數
自冪數定義:
本身=各位數的n次方和(n=總位數)
func IsSelfpower(n int) bool {
numbers := SplitInt(n)
var cubicSum int
for _, v := range numbers {
cubicSum += int(math.Pow(float64(v), float64(len(numbers))))
}
return cubicSum == n
}