big.Int阶乘

package main

import (
	"fmt"
	"math/big"
	"sync"
	"time"
)

//var myMap = make(map[uint]uint, 10)
//var lock sync.Mutex

var synMap sync.Map

func test(n *big.Int) {
	res := big.NewInt(1)
	for i := big.NewInt(1); i.Cmp(n) == -1; i.Add(i, big.NewInt(1)) {
		res.Mul(i, res)
		//fmt.Printf("i值为:%v,n为%v,res为 %v\n", i,n, res)
	}
	//lock.Lock()
	//myMap[n] = res
	//lock.Unlock()
	if n.Sub(n,big.NewInt(1)).Cmp(big.NewInt(0))==1{
		synMap.Store(n, res)
	}
}

func normal(n uint) {
	var res uint = 1
	var i uint = 1
	for ; i <= n; i++ {
		res *= i
	}

	//lock.Lock()
	//myMap[n] = res
	//lock.Unlock()
	synMap.Store(n, res)
}

func main() {

	var i uint = 1
	for ; i < 200; i++ {
		//go normal(i)
		go test(big.NewInt(int64(i)))
	}
	time.Sleep(time.Second)
	synMap.Range(func(k, v interface{}) bool {
		fmt.Print(k)
		fmt.Print(":")
		fmt.Printf("%v", v)
		fmt.Println()
		return true
	})

	//for k, v := range myMap {
	//	fmt.Printf("map[%d]=%d\n", k, v)
	//}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值