這道題本身更多的是考察如何計算一個數的質數因子,更像是一道數學題,用到了循環的方法:
package main
import (
"fmt"
"math"
)
func main() {
a := 0
fmt.Scan(&a)
end := math.Sqrt(float64(a))
for i := 2; i <= int(end); i++ {
for a%i == 0 {
fmt.Printf("%d ", i)
a /= i
}
if a == 1 {
break
}
}
if a != 1 {
fmt.Printf("%d", a)
}
}
任何一個數,其質數因子都不會大於其平方根,因此可以利用平方根來作爲循環的結束條件,減少運算量。