cs50 pset1 credit 为什么使用模数?

cs50 pset1 credit why use modulo?

我正在尝试通过信用卡验证解决 cs50 pset1。

根据它,我们需要将每个交替数字乘以2,然后将所有数字相加。如果总和的最后一位为零,则该数字无效。

题目中提到using using modulo,但我不确定我是否理解正确

建议使用取模的方式求出号码的最后一位。我不确定模应该做什么。例如,它表示 4003600000000014 的数字是 4。我想我必须检查每个数字,直到找到模数结果。

但购物车号可以有一位或多位数字。所以我们不能使用模数来查找最后一位数字。我错过了什么吗?

我也遇到了信用问题,但遇到了不同的问题。 我相信 modulo 函数用于从右到左提取数字中的每个数字。您将不得不遍历它(数字的长度),最后一次执行循环会给您第一个数字(最左边)

循环主要包含:

  • 运行次数与其长度相同。
  • Digit=num%10
  • num=num/10 //丢弃最右边的数字,以便下一个 运行 将提取新数字

最后,数字将等于最左边的数字。

这适用于 VISA 卡,因为只需要第一位数字。但是对于像 AMEX 这样的其他公司,您必须在最后一个之前的 运行 中包含一个 if 语句来提取第二个数字。

希望对您有所帮助!