计算Golang中的大指数

时间:2015-05-12 05:00:13

标签: go exponentiation

我一直在尝试计算Golang中的NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; NSURL *URL = [NSURL URLWithString:@"site.com/upload"]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 。我理解limit of numeric type并尝试使用2^100包。这是我尝试过的,但我无法弄清楚它为什么不起作用。

我使用computation by powers of two方法计算取幂。

math/big

5 个答案:

答案 0 :(得分:11)

例如,

package main

import (
    "fmt"
    "math/big"
)

func main() {
    z := new(big.Int).Exp(big.NewInt(2), big.NewInt(100), nil)
    fmt.Println(z)
}

输出:

1267650600228229401496703205376

由于它是2的幂,你也可以做一点转变:

package main

import (
    "fmt"
    "math/big"
)

func main() {
    z := new(big.Int).Lsh(big.NewInt(1), 100)
    fmt.Println(z)
}

输出:

1267650600228229401496703205376

答案 1 :(得分:9)

BigInt包允许您calculate x^y in log time(由于某种原因,它被称为exp)。您只需要将mysqli_fetch_array作为最后一个参数传递。

nil

如果您有兴趣自己计算它,请查看我的实现:

package main

import (
    "fmt"
    "math/big"
)

func main() {
    fmt.Println(new(big.Int).Exp(big.NewInt(5), big.NewInt(20), nil))
}

或在go playground上播放。

答案 2 :(得分:1)

如果power % 2 == 0,您将立即返回。相反,您只想获得result的{​​{1}}。然后乘以base ** (power /2),如果result * result为偶数,则将power乘以。{/ p>

答案 3 :(得分:1)

计算2 ^ 100

package main

import (
    "fmt"
    "math/big"
)

func main() {
    n := big.NewInt(0)
    fmt.Println(n.SetBit(n, 100, 1))
}

Playground

答案 4 :(得分:0)

package main

import(
    "fmt"
    "math/big"
)

func main() {

    bigx, power10 := new(big.Int), new(big.Int)
    var x int64
    bigx.SetInt64(x) //set x int64 to bigx
    power10.Exp(big.NewInt(10), bigx, nil) //power10 *big.Int points to solution

    str10 := power10.Text(10)
    fmt.Printf(str10) // print out the number and check for your self

}