50 lines
646 B
Go
50 lines
646 B
Go
package maths
|
|
|
|
// Pow 整数幂运算
|
|
func Pow(a, n int) int {
|
|
if a == 0 {
|
|
return 0
|
|
}
|
|
if n == 0 {
|
|
return 1
|
|
}
|
|
if n == 1 {
|
|
return a
|
|
}
|
|
var result int = 1
|
|
factor := a
|
|
for n != 0 {
|
|
if n&1 != 0 {
|
|
// 当前位是 1,需要乘进去
|
|
result *= factor
|
|
}
|
|
factor *= factor
|
|
n = n >> 1
|
|
}
|
|
return result
|
|
}
|
|
|
|
// PowInt64 整数幂运算
|
|
func PowInt64(a, n int64) int64 {
|
|
if a == 0 {
|
|
return 0
|
|
}
|
|
if n == 0 {
|
|
return 1
|
|
}
|
|
if n == 1 {
|
|
return a
|
|
}
|
|
var result int64 = 1
|
|
factor := a
|
|
for n != 0 {
|
|
if n&1 != 0 {
|
|
// 当前位是 1,需要乘进去
|
|
result *= factor
|
|
}
|
|
factor *= factor
|
|
n = n >> 1
|
|
}
|
|
return result
|
|
}
|