Skip to content

Instantly share code, notes, and snippets.

@gorakhargosh
Last active September 19, 2015 06:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gorakhargosh/f196349d1606d7848616 to your computer and use it in GitHub Desktop.
Save gorakhargosh/f196349d1606d7848616 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"math/big"
)
// readInt reads an integer from standard input.
func readInt() (int, error) {
var a int
_, err := fmt.Scan(&a)
return a, err
}
// bigFactorial calculates the factorial of an arbitrarily large integer.
func bigFactorial(n int64) *big.Int {
ret := big.NewInt(1)
if n == 0 || n == 1 {
return ret
}
return ret.MulRange(1, n)
}
func main() {
n, err := readInt()
if err != nil {
log.Fatal(err)
}
fmt.Println(bigFactorial(int64(n)))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment