
根据中华人民共和国国家标准GB 11643-1999中关于公民编号的规定,公民编号是功能的组合,由17位数字的身体代码和一位数字的验证码组成. 从左到右的排列顺序是: 六位地址码,八位出生日期码,三位顺序码和一位校验码. 序列码的奇数分配给男性号怎么算号怎么算,偶数分配给女性. 验证码是根据ISO 1764: 1983.MOD 11-2验证码基于前十七位数字代码计算出的验证码.
案例号码:430923199509106866
ps:此号码由算法算出,如有雷同纯属巧合


841AE4D906940F38E8DA7F157DB640CF.jpg

1. 前1-6位数字表示:所在省(直辖市、自治区)、市、县的代码;
2. 第7—14位数字表示:出生年、月、日;
3. 第15、16位数字表示:所在地的派出所的代码;
4. 第17位数字表示性别:奇数表示男性,偶数表示女性;
5. 最后一位是校验码,校验你的号码是否合格;
两个必要因素:加权因子(wi) | 校验编码
wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
校验编码:1 0 x 9 8 7 6 5 4 3 2
公式:S =
通俗理解就是:的第一位*加权因子的第一位 + 的第二位*加权因子的第二位
... 以此类推。
求出的和 % 11,得到一个校验位码 (假设是:5)
最后通过校验位码从校验编码中取出校验码(校验编码中的第5个数)
得到的数字与最后一位匹配,如果相同,那就是合格的号码
(第5位是8,那么位数也必须是8)

// 加权因子、固定的值
NSArray *arr =@[@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2"];
NSString *str = @"43092319950910"; // 的省市县+出生年月
NSString *JYM =@"10X98765432"; //校验码
_array = [NSMutableArray array]; //保存产生的合格的数组
int sum = 0; //得到 省市县+出生年月 加权因子和
for (int i = 0; i<str.length; i++) {
id number = [str substringWithRange:NSMakeRange(i, 1)];
sum += [number intValue] * [arr[i] intValue];
}
//通过加权因子计算,再衍算接下来的4位
for (int i = 0; i<9999; i++) {
int S = sum;
int ge = i/1; //取各位 校验位
int shi = i0/10; //取十位
int bai = i00/100; //取百位
int qian = i 000/1000; //取千位
S += shi*[arr[16] intValue] + bai*[arr[15] intValue] + qian*[arr[14]intValue]; //加权求和
int Y = S % 11; //取模算法 y = mod(S, 11)
//模数校验
id M = [JYM substringWithRange:NSMakeRange(Y,1)];// 判断校验位
BOOL b = ge == [M intValue]; // 判断是否合格
//合格的添加到数组
if(b){[_array addObject:[NSString stringWithFormat:@"%@%d%d%d%d",str,qian,bai,shi,ge]];}
}
for (int i = 0; i<999; i++) {
int S = sum;
NSString *ge = @"X"; //取各位 校验位
int shi = i/1; //取i的各位
int bai = i0/10; //取i的十位
int qian = i 00/100; //取i的百位
S += shi*[arr[16] intValue] + bai*[arr[15] intValue] + qian*[arr[14]intValue]; //加权求和
int Y = S % 11; //取模算法 y = mod(S, 11)
//模数校验
id M = [JYM substringWithRange:NSMakeRange(Y,1)];// 判断校验位
BOOL b = [ge isEqualToString:M];
if(b){[_array addObject:[NSString stringWithFormat:@"%@%d%d%d-%@",str,qian,bai,shi,ge]];}
}

最终生成的号码是当前县的当前号码.

C0A90AA44EA6A2BD37C86BE3BA5368A0.jpg
离题:
假设一个县当天有1100多个孩子出生,情况将会怎样.
有人可以告诉我如何获取公式,图片吗?
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-265169-1.html
生产加工和运输流程啊
呵呵在南海说自由我们有权利自由