如何快速的判断整数能否被11整除?


1位数除0之外不能被11整除, 2位数的话 除了 11, 22, 33 .. 99 之外不能被11整除. 3位数的话 121, 132 .. 可以把个位数和百位数相加 然后减去十位数 如果为0就能被整除, 比如 176 能被11整除因为 1+6-7=0. 4位数以上就比较麻烦了, 不过有更为简便的方法.

假设 整数为 tex_18e2723af4e2155cbb7b7b110f2f16e5 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计 那么只要 tex_cfd9f0ebe8d31469a2e9dc51c34890d9 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计 那么这个整数就能被11整除.

比如 3619 这个整数 我们可以拆成 +3 -6 +1 -9 这4个数字, 相邻的符号取反并求和, 为 -11 能被11整除 所以 3619 也能被11整数 商为329. 最左边数字的符号可取正也可取负, 如果取负的话, -3+6-1+9=11 判断也是成立的. 这个简单的数学小技巧是怎么来的呢?

因为: 1, 100, 10000, 100000, .. tex_a273f61ac2f25731319c96a8b8978118 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计 除于11的余数为1 而 10, 1000, 100000… tex_49d021e6332b174bd49435a773227700 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计 除于11余数为 -1 所以任何整数都可以写成:

tex_725b1e98a55ffdae90e36a83eabb85fe 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计

假设 n 是奇数 那么 除11取余数为: tex_6bde12e981260c4a8cdec8ec0180c209 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计
若是 偶数 那么 除11取余数为: tex_db6c63319d3f480b84156360c908dba6 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计

两种情况都是把 每位数字符号取反相加求和, 然后再判断这个值是否能被 11整除就可以了.

这个算法在判断高精度整数就能用上了, 所谓的高精度整数就是很大很大的整数(位数远超过了计算机4个字节或者8个字节所能表示的值)

献上 VBScript 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
Function DivBy11(num)
    s = 0
    sign = 1
    For i = 1 To Len(num)
        s = s + (Asc(Mid(num, i, 1)) - 48) * sign
        sign = -sign
    Next
    DivBy11 = (s Mod 11) = 0
End Function
 
If DivBy11("3619") Then
    Msgbox "可以被整除" 
End If
Function DivBy11(num)
	s = 0
	sign = 1
	For i = 1 To Len(num)
		s = s + (Asc(Mid(num, i, 1)) - 48) * sign
		sign = -sign
	Next
	DivBy11 = (s Mod 11) = 0
End Function

If DivBy11("3619") Then
	Msgbox "可以被整除" 
End If

参考英文: C++ Coding Exercise: How to Check if a Large Integer is divisible by 11?

GD Star Rating
loading...
本文一共 341 个汉字, 你数一下对不对.
如何快速的判断整数能否被11整除?. (AMP 移动加速版本)
上一篇: 免费好用的二维码图片API
下一篇: 2016法国欧洲杯 四分之一决赛即将打响!

扫描二维码,分享本文到微信朋友圈
86a0bb236f793b27351e2903d9e98eb8 如何快速的判断整数能否被11整除? I.T. 小技巧 数学 程序设计

评论