数字被17整除?

paw*_*wan 5 algorithm math

给出最大1000位数的正数.你必须弄清楚这个数字是否可以被17整除.我知道一种算法,它将最后一位数乘以5并从剩余数中减去,如果得到的数字可以被17整除,那么该数字可以被17整除.是否有更有效的方法?

rua*_*akh 11

你可以做的是迭代数字,跟踪模数 17 的当前值.当你到达结束时,如果 17 的当前值为零,那么它是17的倍数; 否则,不是.

例如,如果您的号码是"12345"(我假设您将此号码存储在十进制字符串中?),则步骤为:

  • 从...开始 0
  • (0 * 10 + 1) mod 171
  • (1 * 10 + 2) mod 1712
  • (12 * 10 + 3) mod 174
  • (4 * 10 + 4) mod 1710
  • (10 * 10 + 5) mod 173

所以12345 mod 173:12345不可被整除17.

(当然,12345你可以先写12345 mod 17一下,但是数字很多,上面的方法让我们一次只能处理一下,这很方便,因为它意味着我们所有的数字都足够小以适应处理器的本机32位或64位整数.)