아래의 소스 testBigInt.go 는 GMP 사용 예제 for C 의 testGMP.c 를 Go 언어 용으로 수정한 것이다.

Go 언어는 (C 언어와 달리) 긴 자리 정수 타입을 빌트인 패키지로 내장하고 있다. 긴 자리 정수 타입을 사용하기 위해서는 (소스 파일의 선두에) "math/big" 패키지를 미리 임포트(수입)해야 한다.

 

  1. /*
  2.  *  Filename: testBigInt.go
  3.  *
  4.  *   Compile: go build testBigInt.go
  5.  *   Execute: ./testBigInt
  6.  *
  7.  *  or
  8.  *
  9.  *   Execute without compiling: go run testBigInt.go
  10.  *
  11.  *    Output: 2470450
  12.  */
  13. package main
  14. import (
  15.     "fmt"
  16.     "math/big"
  17. )   
  18. func foo(param *big.Int, n int64) *big.Int{
  19.     var i int64
  20.     var r *big.Int = big.NewInt(1)
  21.     r.Mul(param, big.NewInt(n))
  22.     for i = 1; i < n; i++ { 
  23.         r.Add(r, big.NewInt(i*7))
  24.     }
  25.     return r
  26. }
  27. func main() {
  28.     var r *big.Int;
  29.     /// var n *big.Int = big.NewInt(123456)
  30.     var n *big.Int = big.NewInt(1)
  31.     n.SetInt64(123456)
  32.     r = foo(n, 20)
  33.     fmt.Printf("%s\n", r)
  34. }



실행> go run testBigInt,go
2470450


컴파일> go build testBigInt.go
실행> ./testBigInt
2470450




Posted by Scripter
,