package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
// 得到输入的整数
func getPrintNumber() int {
reader := bufio.NewReader(os.Stdin)
str, _ := reader.ReadString('\n')
str = strings.TrimSuffix(str, "\n")
num, _ := strconv.Atoi(str)
return num
}
func printDemo(number int) []int {
// 定义一个int切片,用于存储质因子
var numSlice []int
// 首先找到所有2因子
for number%2 == 0 {
numSlice = append(numSlice, 2)
number = number / 2
}
// 从3开始找所有奇数因子
for i:= 3; i*i <= number; i+=2 {
for number%i == 0 {
numSlice = append(numSlice, i)
number = number / i
}
}
// 剩余的没办法整除了也加入因子切片
if number > 2 {
numSlice = append(numSlice, number)
}
return numSlice
}
func main() {
number := getPrintNumber()
numSlice := printDemo(number)
for _, value := range numSlice {
fmt.Printf("%d ", value)
// fmt.Print(strconv.Itoa(value) + " ")
}
}