题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
package main import ( "fmt" "math" "strings" "bufio" "strconv" "os" ) func main() { r := bufio.NewReader(os.Stdin) b, _, err := r.ReadLine() if err != nil { return } d, err := strconv.Atoi(string(b)) if err != nil { return } ls := []int{} LookUpPrime(d, &ls) lt := []string{} for _, v := range ls { lt = append(lt, fmt.Sprintf("%d", v)) } fmt.Println(strings.Join(lt, " ")) } func LookUpPrime(n int, ls *[]int) { if n <= 1 { return } if IsPrime(n) { *ls = append(*ls, n) return } for i := 2; i <= int(math.Sqrt(float64(n))); i++ { if n%i == 0 { *ls = append(*ls, i) LookUpPrime(n/i, ls) break } } } func IsPrime(n int) bool { if n <= 1 { return false } for i := 2; i <= int(math.Sqrt(float64(n))); i++ { if n%i == 0 { return false } } return true }