- 4
- 0
- 约4.6千字
- 约 6页
- 2016-08-23 发布于重庆
- 举报
关于位数比较多的正整数进行MOD运算的实现
关于位数比较多的正整数进行MOD运算的实现? ? 近日看到一个朋友询问,如何解决?60172011330000002 mod 24?运算时出现溢出的问题。于是开始动手实践尝试解决这个问题的办法。一开始想当然,从最原始的对Mod运算的理解出发:假设被除数为A,除数为B,那么根据数学的道理,只要当A大于或者等于B,就实施A = A – B,这样不断地做减法,一直到A小与B为止,此时的A就是所求。比如:7 Mod 2,那么7 – 2?得到5,5 – 2得到3,3 – 2得到1,所以结果为1。使用循环来实现本问题,代码如下:Dim a As DoubleDim b As Doublea = 6.017201133E+16 ? ? ?当输入完毕,一按回车,整数就被用科学记数法近似取代b = 24Do While a = ba= a - bLoopMsgBox a结果有两个明显的问题,问题1:显然这样做是十分费时的,不符合实际。问题2:这样仍然存在数据精度问题,当数位一多,无论用Double还是Single来保留,系统都是以近似值保存的,所以就无法得到正确的答案。?所以要从以下几个方面着手:?首先:解决如何保存数据;?解决的方法:将一个多位正整数,用一维字符数组来保存。?例如将数字60172011330000002,保存到数组a(),其效果见下图:??又如将数字24,保存到数组b(),其效果见
原创力文档

文档评论(0)