什么是水仙花数?
水仙花数:三位数:[100,999]
每个位上的数字的立方和,刚好等于该数字本身,那么就叫水仙花数
比如:153
1*1*1 + 5*5*5 + 3*3*3 = 1+125+27=153
思考:如何分别取出三位数的百位、十位、个位?
以268为例:
(1)取出百位:
268 / 100 = 2
(2)取出个位:
268 % 10 = 8
(3)取出十位(两种方法):
268 --> 268 / 10 % 10 = 6
268 --> 268 % 100 / 10 = 6
Go实现求水仙花数的两种方式
第一种:
package main
import (
"fmt"
"math"
)
func main() {
for i := 100; i < 1000; i++ {
x := i / 100 //百位
y := i / 10 % 10 //十位
z := i % 10 //个位
if math.Pow(float64(x), 3)+math.Pow(float64(y), 3)+math.Pow(float64(z), 3) == float64(i) {
fmt.Println(i)
}
}
}
第二种:
package main
import "fmt"
func main() {
for a := 1; a < 10; a++ {
for b := 0; b < 10; b++ {
for c := 0; c < 10; c++ {
n := a*100 + b*10 + c*1
if a*a*a+b*b*b+c*c*c == n {
fmt.Println(n)
}
}
}
}
}
最终结果
153
370
371
407