快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。 如果可以变为 1,那么这个数就是快乐数。 如果n是快乐数就返回 true ;不是,则返回 false 。
如
:
19
是
快
乐
数
如:19是快乐数
如:19是快乐数
1
2
+
9
2
=
82
,
8
2
+
2
2
=
68
,
6
2
+
8
2
=
100
,
1
2
+
0
2
+
0
2
=
1
1^2 + 9^2 = 82,8^2 + 2^2 = 68,6^2 + 8^2 =100, 1^2 + 0^2 + 0^2 = 1
12+92=82,82+22=68,62+82=100,12+02+02=1
package main
import (
"fmt"
)
//判断是否为快乐数,并统计计算次数
func happy_num(n int) (result bool, times int) {
var s int = sum(n)
times = 1
for s != 1 && times < 1000 {
n = s
s = sum(n)
times += 1
}
if s == 1 {
result = true
} else {
result = false
}
return
}
//计算每位数的平方和
func sum(n int) int {
var s int
for n != 0 {
s += (n % 10) * (n % 10)
n /= 10
}
return s
}
func main() {
a, b := happy_num(19)
fmt.Println(a, b)
}