【整除和余数】如何不用计算器或计算机计算

作者:gugeren
发表时间:
+-

3214.2829.1234.5698.7654.3216.1182

这个28位数字被97除之后的余数?

一般的计算器或计算机的数位已经不够用了。

而且是要求出这个数被97除之后的余数!


问题来源:

国际标准ISO 7064中,一种求数串的检验码的标准方法是MOD 97-10。

与中国居民身份证号码的MOD 11-2类似,这里的MOD 97-10,指的是:10进位数字被97除之后求它的余数。

例如,欧洲银行所用的账户号码【称IBAN】,最多可达30多位数字呢。



  • 当前共有1条跟帖
  • tda:把它看成10000进制的7位数。

    把它看成10000进制的7位数。先计算100000次方,1次方,...,6次方的97余数:

    0次方:1

    1次方 9

    2次方: 9(9)=81

    3次方: 9(81), 97除后,余50

    ...

    6次方: 75

    数字的97余数

    1128: 18

    3216: 15

    ...

    3214: 13

    把权重的数字的余数从高位到地位排列

    权重: 75 73 62 50 81 9 1

    数字: 13 16 70 72 881518

    再低位起,把数字乘权重累加得到(大于97要求余):

    累加:  1  93 89 17  6 5618

    这样得到28位数字被97除之后的余数是1


    屏蔽 举报回复
    gugeren 回复 tda:我最初的想法是:

    把10的各次方被97除后的余数都找出来,然后都加起来,再被97去除,得出结果。

    后来看到它的方法是运用了平时做除法的方法,只是分段来做,以适应计算器的位数【文中分9位一段】:

    https://en.wikipedia.org/wiki/International_Bank_Account_Number#Modulo_operation_on_IBAN

    我的计算器只能算8位,分为8位一段也行。


    屏蔽 举报回复
    tda 回复 gugeren:我是手算的。10000的97余数很容易
    屏蔽 举报回复
    tda 回复 tda:算出一个,然后就是余数乘余数,很容易
    屏蔽 举报回复