找回密码
 欢迎注册
查看: 11302|回复: 3

[求助] 谁能用mathematica写个校验身份证的子函数?

[复制链接]
发表于 2019-4-19 13:26:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
  1. (*身份证检验码*)
  2. Clear["Global`*"];(*Clear all variables*)
  3. (*没考虑身份证号码最后一位x的情况*)
  4. fun[id_]:=Module[{ids,dot},
  5.     jym={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
  6.     ids=IntegerDigits[id];
  7.     dot=Dot[ids[[1;;17]],jym];(*前17位与校验码求内积*)
  8.     dot=Mod[dot,11];(*求余数*)
  9.     dot=Mod[12-dot,11];(*余数n,对应的最后一位编码是12-x*)
  10.     If[dot==ids[[18]],Return[True],Return[False]]
  11. ]
复制代码


我写的这个未能考虑最后一位是X的情况,
最后一位是X,应该如何考虑呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-4-19 15:13:56 | 显示全部楼层
这个容易,嵌套个特例啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-4-26 11:39:56 | 显示全部楼层
markfang2050 发表于 2019-4-19 15:13
这个容易,嵌套个特例啊

我自己用perl搞定了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-4-26 22:05:47 | 显示全部楼层
mathematica 发表于 2019-4-26 11:39
我自己用perl搞定了

代码贴出啊,。C就可以。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-19 00:58 , Processed in 0.042418 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表