LUHN算法,主要用来计算信用卡等证件号码的合法性。
1、从卡号最后一位数字开始,偶数位乘以2,如果乘以2的结果是两位数,将两个位上数字相加保存。
2、把所有数字相加,得到总和。
3、如果信用卡号码是合法的,总和可以被10整除
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char * argv[]) { char num[30]; while(gets(num)!=NULL){ int len=(int)strlen(num); int sum=0; int tmp; for(int i=len-1;i>=0;i--) { if((len-i)%2==1) //奇数位 sum+=num[i]-'0'; else //偶数位 { tmp=(num[i]-'0')*2; sum+=tmp>=10?tmp-9:tmp; } } printf("sum=%d\n",sum); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-06 09:54:29