精易论坛

标题: 发一个偏门算法 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)


原作者:大色秘密



作者: 空竹    时间: 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