go语言一个数如果恰好等于它的因子之和,这个数就称为 “完数”。例如 6=1+2+3,编程找出 1000 以内的所有完数。
时间: 2024-09-20 21:07:13 浏览: 29
Java 完数 Mooc
5星 · 资源好评率100%
在 Go 语言中,要找出1000以内所有的完数,可以创建一个函数,遍历给定范围内的每个数字,检查它们是否满足完数的定义,也就是其所有因数之和等于该数字本身。这里是一个简单的解决方案:
```go
package main
import (
"fmt"
"math"
)
func isPerfectNumber(n int) bool {
sum := 1 // 自然数1总是其因子之一
for i := 2; i <= int(math.Sqrt(float64(n))); i++ {
if n%i == 0 {
sum += i // 如果i是n的因子,那么sum += i
if i != n/i { // 如果这不是最大的因子(如n=6, i=2, n/i=3)
sum += n/i // 添加较小的因子
}
}
}
return sum == n
}
func findPerfectNumbers(max int) []int {
var perfects []int
for i := 2; i <= max; i++ {
if isPerfectNumber(i) {
perfects = append(perfects, i)
}
}
return perfects
}
func main() {
maxLimit := 1000
perfectNumbers := findPerfectNumbers(maxLimit)
fmt.Println("1000以内的完数有:", perfectNumbers)
}
```
在这个程序中,`isPerfectNumber` 函数用于检查一个数字是否是完数,`findPerfectNumbers` 函数则遍历指定范围内寻找并返回所有完数。
阅读全文