R语言:判断身份证号码真伪的函数编写

基于两个条件检验第二代身份证号码的真伪

基于两个条件:
1.身份证号码位数是18位
2.第二代身份证号码最后一位的编码规则

check_id=function(id){
id=as.character(id)
w=c(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
v=c(1,0,“X”,9,8,7,6,5,4,3,2)
for (i in 1:length(id)) {
if(nchar(id[i])==16){
print(“第一代身份证系统无法识别,请人工检验”)
}else if(nchar(id[i])18){
sum=0;a=0;c=0
for (j in 1:17) {
sum=sum+as.numeric(substr(id[i],j,j))*w[j]
}
a=sum%%11
c=v[a+1]
if(c
substr(id[i],18,18)){
print(sprintf(“第%d个身份证号是真的”,i))
}else{
print(sprintf(“第%d个身份证号是假的,伪造身份证,你被逮捕了!”,i))
print(id[i])}
}
else{
print(sprintf(“第%d个身份证号是假的,伪造身份证,你被逮捕了!”,i))
print(id[i])
}
}
}

调用上面函数就可以了。

如有错误,欢迎交流

链接: link.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值