计算ISBN的校验位

时间:2010-09-12 22:15:18

标签: pseudocode discrete-mathematics

这实际上不是家庭作业,我只是在下周开始计算机科学之前,在一本离散的数学书中查看一些问题。

无论如何,其中一个问题要求我编写一个程序来执行这个算法(它解释了)。我坚持的部分是如何获取9位数字并将其“拆分”为单个整数,因此可以对每个数字执行计算。

我想将数字除以100,000,000,然后取整数值得到第一个数字,但我不知道如何得到其他数字。

如果这是在PHP或其他东西我可以使用explode(),但我想这不是重点:P

3 个答案:

答案 0 :(得分:4)

您可以使用mod(%)和除(/)运算符。

N%10会给你最后一位数字。 N / 10(整数除法)将删除最后一位数。

您可以继续直到没有更多数字。

答案 1 :(得分:1)

一旦你除以100,000,000并取整数值,你就可以将这个整数值乘以100,000,000并从ISBN中减去它。这实际上只取消了最左边的数字。现在,重复10,000,000 - 依此类推。

5位数的示例:

Start: 74325

74325/10000 and int = 7 (there's your first digit)
7 * 10000 = 70000
74325 - 70000 = 4325

4325/1000 and int = 4 (there's your next digit)
4 * 1000 = 4000
4325 - 4000 = 325

等等!

答案 2 :(得分:0)

使用模运算:

a % 10 to get the last digit
a % 100 to get the last two digits. (a % 100) - (a % 10) to get the second last number
etc.