猿问

在 Golang 中计算大指数

我一直在尝试2^100用 Golang计算。我了解数字类型的限制并尝试使用math/big包。这是我尝试过的,但我不知道为什么它不起作用。


我已经使用两种方法的幂计算来计算幂。


package main


import (

    "fmt"

    "math/big"

)


func main() {

    two := big.NewInt(2)

    hundred := big.NewInt(50)

    fmt.Printf("2 ** 100    is %d\n", ExpByPowOfTwo(two, hundred))

}


func ExpByPowOfTwo(base, power *big.Int) *big.Int {

    result := big.NewInt(1)

    zero := big.NewInt(0)

    for power != zero {

        if modBy2(power) != zero {

            multiply(result, base)

        }

        power = divideBy2(power)

        base = multiply(base, base)

    }

    return result

}


func modBy2(x *big.Int) *big.Int {

    return big.NewInt(0).Mod(x, big.NewInt(2))

}


func divideBy2(x *big.Int) *big.Int {

    return big.NewInt(0).Div(x, big.NewInt(2))

}


func multiply(x, y *big.Int) *big.Int {

    return big.NewInt(0).Mul(x, y)

}


紫衣仙女
浏览 332回答 3
3回答

慕姐4208626

计算 2^100package mainimport (    "fmt"    "math/big")func main() {    n := big.NewInt(0)    fmt.Println(n.SetBit(n, 100, 1))}
随时随地看视频慕课网APP

相关分类

Go
我要回答