判断水仙花数
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
}