AcWing 867. 分解质因数-代码注释-golang
原题链接
简单
作者:
望哥
,
2020-07-17 12:20:00
,
所有人可见
,
阅读 500
package main
import "fmt"
import "bufio"
import "os"
var reader = bufio.NewReader(os.Stdin)
var writer = bufio.NewWriter(os.Stdout)
// 试除法拆解质因子
func dispart(a int){
cnt:=0
// 大于 sqrt(a) 的质因子最多只有一个,i<=a/i即 i^2 <= a, i <= sqrt(a)
for i:=2;i<=a/i;i++ {
if a%i == 0{
// do first
cnt,a = 1, a/i
// for 循环再次尝试统计指数部分
for a%i == 0 {
cnt++
a /= i
}
fmt.Fprintln(writer, i, cnt)
}
}
// 大于 sqrt(a) 的部分的质因子,只有1个
if a>1{
fmt.Fprintln(writer, a, 1)
}
fmt.Fprintln(writer)
}
func main(){
var n,a int
fmt.Fscan(reader,&n)
for i:=0;i<n;i++{
fmt.Fscan(reader,&a)
dispart(a)
}
writer.Flush()
}