精易论坛
标题:
发一个偏门算法 xx卡校验易语言版本
[打印本页]
作者:
我爱搬运
时间:
2018-5-25 11:49
标题:
发一个偏门算法 xx卡校验易语言版本
子程序名
返回值类型
公开
备 注
银行ka卡号校验
逻辑型
一般都是19位
参数名
类 型
参考
可空
数组
备 注
卡号
文本型
变量名
类 型
静态
数组
备 注
m
整数型
10
i
整数型
digit
整数型
sum
整数型
odd
整数型
m
[
1
]
= 0
m
[
2
]
= 2
m
[
3
]
= 4
m
[
4
]
= 6
m
[
5
]
= 8
m
[
6
]
= 1
m
[
7
]
= 3
m
[
8
]
= 5
m
[
9
]
= 7
m
[
10
]
= 9
odd = 1
变量循环首
(
取文本长度
(
卡号
)
, 1, -1, i
)
digit =
取代码
(
卡号, i
)
- 48
sum = sum +
选择
(
odd ≠ 0, digit, m
[
digit + 1
]
)
如果
(
odd = 1
)
odd = 0
odd = 1
变量循环尾
(
)
' const int m
[
]
=
{
0,2,4,6,8,1,3,5,7,9
}
; // mapping for rule 3
' int i, odd = 1, sum = 0;
' for
(
i = strlen
(
cc
)
; i--; odd = !odd
)
'
{
' int digit = cc
[
i
]
- '0';
' sum += odd ? digit : m
[
digit
]
;
'
}
返回
(
sum % 10 = 0
)
.版本 2
.子程序 银行ka卡号校验, 逻辑型, , 一般都是19位
.参数 卡号, 文本型
.局部变量 m, 整数型, , "10"
.局部变量 i, 整数型
.局部变量 digit, 整数型
.局部变量 sum, 整数型
.局部变量 odd, 整数型
m [1] = 0
m [2] = 2
m [3] = 4
m [4] = 6
m [5] = 8
m [6] = 1
m [7] = 3
m [8] = 5
m [9] = 7
m [10] = 9
odd = 1
.变量循环首 (取文本长度 (卡号), 1, -1, i)
digit = 取代码 (卡号, i) - 48
sum = sum + 选择 (odd ≠ 0, digit, m [digit + 1])
.如果 (odd = 1)
odd = 0
.否则
odd = 1
.如果结束
.变量循环尾 ()
' const int m[] = {0,2,4,6,8,1,3,5,7,9}; // mapping for rule 3
' int i, odd = 1, sum = 0;
' for (i = strlen(cc); i--; odd = !odd)
' {
' int digit = cc
- '0';
' sum += odd ? digit : m[digit];
' }
返回 (sum % 10 = 0)
原作者:大色秘密
作者:
空竹
时间:
2018-5-25 12:12
看不懂啊。。
作者:
mood100
时间:
2018-5-25 13:58
学习了。感谢分析nag
作者:
不会英文学习易
时间:
2018-5-25 18:16
支持开源,感谢分享
作者:
盼盼a
时间:
2018-5-31 00:48
Luhn算法:
1、从右边第一个数字(低序)开始每隔一位乘以2。
2、把在步骤1中获得的乘积的各位数字与原号码中位乘2的各位数字相加求和。
3、从步骤2中获得的数字邻近的较高的以0结尾的数字减去该数字(即求这个总和的低位数字(个位数)的“10的补数”)。如果在步骤2中得到的总和是以0结尾的数,则校验数字就是0。
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4