2010-09-12 142 views
4

这实际上并不是家庭作业,我只是在下周开始计算机科学之前浏览离散数学书中的一些问题。计算ISBN的校验位

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

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

如果这是在PHP或东西,我可以只使用爆炸(),但我想在这里,不是问题的关键:P

回答

4

可以使用国防部(%),除(/)运算符。

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

你可以继续,直到你没有更多的数字。

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. 
1

一旦通过亿分而采取的整数值,可以再回来亿乘以这个整数,并从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 

等等!