得到bigInt数golang的和

得到bigInt数golang的和,go,bigint,sum-of-digits,Go,Bigint,Sum Of Digits,嗨,我是刚接触golang编程语言的。我可以得到这个数字 来自factoral函数的值,但它不适用于add 功能 我已经有了接受bigint的add函数,但是当我尝试添加一个 .Mod和.Div方法由于某种原因返回0。如果还有 add函数中的语句是我创建时使用的旧语句 具有来自因子函数的int值 当它作为int值时,它工作得非常完美。当我试图 修改if-else语句以接受bigint值,但我无法获取它 我根本不想工作 我尝试了.Mod和.Div方法,他们正在打印 正确的值。但当我尝试将它们加在一

嗨,我是刚接触golang编程语言的。我可以得到这个数字 来自factoral函数的值,但它不适用于add 功能

我已经有了接受bigint的add函数,但是当我尝试添加一个 .Mod和.Div方法由于某种原因返回0。如果还有 add函数中的语句是我创建时使用的旧语句 具有来自因子函数的int值

当它作为int值时,它工作得非常完美。当我试图 修改if-else语句以接受bigint值,但我无法获取它 我根本不想工作

我尝试了.Mod和.Div方法,他们正在打印 正确的值。但当我尝试将它们加在一起时,它总是返回 0即使值为“22”、“2”。现在,我已经将if-else语句恢复为原始的int值

如果有人能帮我解决这个问题,我将非常感激

 package main

import (
    "fmt"
    "math/big"
)

func factoral(n uint64) (r *big.Int) {

    one, bn := big.NewInt(1), new(big.Int).SetUint64(n)

    r = big.NewInt(1)
    if bn.Cmp(one) <= 0 {
        return
    }
    for i := big.NewInt(2); i.Cmp(bn) <= 0; i.Add(i, one) {
        r.Mul(r, i)
    }
    return
}

func add(number *big.Int) *big.Int {
    //this the statement that works with normal int values
    if number/10 < 10 {
        return sum + number/10
    } else {
        return sum + add(number/10)
    }

}
func main() {
    fmt.Println(add(factoral(100)))

}
主程序包
进口(
“fmt”
“数学/大”
)
函数因子(n uint64)(r*big.Int){
一,bn:=big.NewInt(1),new(big.Int).SetUint64(n)
r=大。新整数(1)
如果bn.Cmp(1)修复了它

package main

import (
    "fmt"
    "math/big"
)

func factoral(n uint64) (r *big.Int) {

    one, bn := big.NewInt(1), new(big.Int).SetUint64(n)

    r = big.NewInt(1)
    if bn.Cmp(one) <= 0 {
        return
    }
    for i := big.NewInt(2); i.Cmp(bn) <= 0; i.Add(i, one) {
        r.Mul(r, i)
    }
    return
}

func add(number *big.Int) *big.Int {
    ten := big.NewInt(10)
    sum := big.NewInt(0)
    mod := big.NewInt(0)
    for ten.Cmp(number)<0 {
      sum.Add(sum, mod.Mod(number,ten))
      number.Div(number,ten)
    }
    sum.Add(sum,number)
  return sum
}
func main() {
    fmt.Println(add(factoral(100)))

}
主程序包
进口(
“fmt”
“数学/大”
)
函数因子(n uint64)(r*big.Int){
一,bn:=big.NewInt(1),new(big.Int).SetUint64(n)
r=大。新整数(1)

如果这里的bn.Cmp(one)
sum
是未定义的。您是否忘记省略全局定义?另外,
number
add()
)的参数是一个
*big.Int
,因此
add
函数中的运算符没有意义(即
//code>,