Golang中如何计算大整数数组的乘积

Golang中如何计算大整数数组的乘积 你好,我有一个包含多个 big.Int 的数组,需要计算所有元素的乘积(例如,在下面的简单例子中计算 3x5x7)。处理 big.Int 指针似乎有点棘手。有人能帮忙吗?谢谢!

package main

import (
	"fmt"
	"math/big"
)

func main() {
			testarray := make([]*big.Int, 3)
			entry1 := new(big.Int)
			entry2 := new(big.Int)
			entry3 := new(big.Int)
			number1 := "3"
			number2 := "5"
			number3 := "7"
			entry1.SetString(number1, 10)
			entry2.SetString(number2, 10)
			entry3.SetString(number3, 10)
			testarray[0] = entry1
			testarray[1] = entry2
			testarray[2] = entry3
			fmt.Println(testarray)
}

更多关于Golang中如何计算大整数数组的乘积的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

如果你阅读了文档,事情会简单得多。

package main

import (
	"fmt"
	"math/big"
)

func main() {
	testarray := []*big.Int{big.NewInt(3), big.NewInt(5), big.NewInt(7)}
	fmt.Println(testarray)
	var R *big.Int = big.NewInt(1)

	for _, v := range testarray {
		R.Mul(R, v)
	}
	fmt.Println(R)
}

https://play.golang.org/p/HU35Xk1PuqR

更多关于Golang中如何计算大整数数组的乘积的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


可以直接使用 big.IntMul 方法遍历数组计算乘积。以下是示例代码:

package main

import (
	"fmt"
	"math/big"
)

func productOfBigInts(arr []*big.Int) *big.Int {
	if len(arr) == 0 {
		return big.NewInt(0)
	}
	
	result := big.NewInt(1)
	for _, num := range arr {
		result = new(big.Int).Mul(result, num)
	}
	return result
}

func main() {
	testarray := make([]*big.Int, 3)
	entry1 := new(big.Int)
	entry2 := new(big.Int)
	entry3 := new(big.Int)
	number1 := "3"
	number2 := "5"
	number3 := "7"
	entry1.SetString(number1, 10)
	entry2.SetString(number2, 10)
	entry3.SetString(number3, 10)
	testarray[0] = entry1
	testarray[1] = entry2
	testarray[2] = entry3
	
	product := productOfBigInts(testarray)
	fmt.Println(product) // 输出: 105
}

对于空数组的情况,函数返回 0。如果希望返回 1,可以将 big.NewInt(0) 改为 big.NewInt(1)

如果需要在原数组上直接计算,也可以这样实现:

func productOfBigIntsInline(arr []*big.Int) *big.Int {
	if len(arr) == 0 {
		return big.NewInt(0)
	}
	
	result := new(big.Int).Set(arr[0])
	for i := 1; i < len(arr); i++ {
		result.Mul(result, arr[i])
	}
	return result
}

两种方法都能正确处理 big.Int 指针的乘法运算。

回到顶部