解题思路
- 暴力搜索每个数的约数然后求和最后看是否满足条件,满足条件就添加到数组中,然后统计数组的长度
- 优化方法就是添加一些条件让循环次数减少
package main import( "fmt" ) func main(){ var num int for{ if n,_ := fmt.Scan(&num); n == 0{ return } nums :=make([]int,0) // 数值递增 1,2,3,4....n for i := 1;i<num;i++{ s := 0 // 对数求真因子 for j := 1;j<i;j++{ if i%j == 0{ s += j } } //是否满足真因子的和等于它本身 if s == i{ nums = append(nums,s) } } fmt.Println(len(nums)) } }