其它运算操作生成随机数echo gmp_random_range("10000000000000", "99999999999999999"), PHP_EOL; // 83490559526159213// 12500000000echo gmp_random_bits(99999),PHP_EOL; // 289814632948807684404778811091812938699609………………就和普通的生成随机数的函数一样,只不过 GMP 扩展库下面的这两个函数能够生成的数字范围更大,而且返回的也是 GMP 对象的格式 。对于 gmp_random_bits() 来说,最大的范围是 12500000000 ,我的机子如果使用这个随机因子的话直接就会报超出内存了 。而使用 99999 这个随机因子生成的随机数字也已经非常大了,大家可以自己尝试一下 。
阶乘这个是普通的 Math 库中所没有的函数 。直接帮我们计算阶乘的结果,不用自己写算法了哦 。
echo gmp_fact(5), PHP_EOL; // 1205*4*3*2*1=120echo gmp_fact(50), PHP_EOL; // 30414093201713378043612608166064768844377641568960512000000000000 50*49*48…………*2*1素数除了阶乘之外,GMP 还提供了非常高大上的直接获取和判断素数的函数 。一般来说,素数(质数)也是面试中非常常见的算法题目,我们在面试的时候还是要掌握自己手写的能力,但是手写完之后能和面试官说一下 GMP 中已经有现成的函数了相信也会带来一些加分 。
echo gmp_nextprime(10), PHP_EOL; // 11echo gmp_nextprime(1000), PHP_EOL; // 1009echo gmp_prob_prime(6), PHP_EOL; // 0echo gmp_prob_prime("1111111111111111111"), PHP_EOL; // 1echo gmp_prob_prime(7), PHP_EOL; // 2gmp_nextprime() 是获取指定数字之后的下一个素数是多少 。gmp_prob_prime() 则是判断给写的数字是否是素数,它有三种结果,0 表示不是素数,1 表示可能(疑似)素数,2 表示确定是素数 。
数据的符号信息echo gmp_sign("500"), PHP_EOL; // 1echo gmp_sign("-500"), PHP_EOL; // -1echo gmp_sign("0"), PHP_EOL; // 0最后这个 gmp_sign() 函数用来表示给定数据的符号信息,也就是正负数 。它也是三种结果,1 表示正数,-1 表示负数,0 表示 0。为什么会有一个特殊的 0 存在呢?因为 0 即不是正数也不是负数呀,它本身就是一个特殊的存在 。
总结关于 GMP 扩展还有很多方法并没有一一列举出来,在这里只是挑选了一些比较常用的内容给大家介绍一下 。虽说是刷文档,但也不能直接照搬文档过来,所以更多的内容大家还是自行去文档中查阅,我们学习的目的主要就是知道有这么个东西,不至于在真实的业务需求中踫到了相关的内容时抓瞎 。
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202012/source/8.PHP中操作任意精度大小的GMP扩展学习.php
参考文档:
https://www.php.net/manual/zh/book.gmp.php
推荐阅读
- 中秋节的来源和历史?介绍一下中秋节的来历
- 米哈游是中国的吗?
- 抽奖|女子看直播抽中iPhone 13 Pro!到手却成老年机
- ARM|CEO被强行赶走!安谋中国官方声明:从未变更法人
- 为什么明史这么受欢迎?明朝中期发生了什么
- 莳萝子在卤肉中的用量,莳萝在烹调中的作用及用法
- 中国元旦节的习俗是什么
- 保肝养肝护肝的中成药,蜜蒙花的禁忌
- 为什么皇太极那么宠爱海兰珠?历史中的皇太极真的那么爱海兰珠吗
- 中秋古诗大全五言绝句-描写中秋节的古诗五言绝句-
