算法示例//自动数字算法,例如:25 ^ 2 = 625  76 ^ 2 = 5776& nbsp; 9376 ^ 2 = 87909376示例:376& nbsp; & nbsp; & nbsp;  被乘数376& nbsp; & nbsp; & nbsp; & nbsp;乘数------& nbsp; --------- 2256& nbsp; & nbsp;第一部分乘积=乘数*从乘数2632的底部开始的第一位。
& nbsp;第二部分乘积=被乘数*乘数1125的底部的第三个乘积。
& nbsp;第三部分乘积=被乘数*从乘数的底部算起的第三位------- -141376将上述部分乘积的最后3位数字相加,并截断最后3位数字以获得3位数乘积的最后3位数。
C语言实现1#include< stdio.h& gt; 2 3 / *位数决定系数k * / 4#define_bit_num(mul,number,k) 5(& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& mul = number,k = 1;(mul / = 10)> 0; k * = 10)  ; 6 //在这些数字中查找自保留数字0〜xxxx7#define_forech_number(number,num) & nbsp;& nbsp;& nbsp;                           8(& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& number = 0; number& lt; number ++)9 //自动数字核心算法:(偏乘积+截获被乘数的最后N位*截获乘数的第M个位置),%Kk然后截取部分产品10#define& nbsp; automorphic_number(mul,number,k,ll,kk)& nbsp;& nbsp;& nbsp; 11& nbsp;& nbsp;& nbsp;& nbsp;& nbsp ;& nbsp;& nbsp; mul =(mul +(数字%(k * 10))*(数字%ll-number%(ll / 10)))%kk; 12long&print_automorphic_number( long& nbsp; num)13 {14& nbsp;& nbsp;& nbsp; long& nbsp; mul,number,k,ll,kk; 15& nbsp;& nbsp;& nbsp; & nbsp; forech_number(number,num)16& nbsp;& nbsp; {17& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp ;& nbsp; forech_bit_num(mul,number,k); 18& nbsp;& nbsp;& nbsp; & nbsp;& nbsp;& nbsp; kk = k * 10;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; / * kk是部分产品被截断时的系数* / 19& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; & nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; / *的最后n位数字产品* / 20& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; ll = 10;& nbsp;& nbsp;& n; nbsp;& nbsp;   / * ll是当乘数的相应数字被截取时的系数* / 21 ; & nbsp;& nbsp;& nbsp;而(k& nbsp;& nbsp; 0)22& nbsp;& nbsp;& nbsp;& amp; ;     {23& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& n & nbsp;& nbsp;& nbsp;& nbsp; automorphic_number(mul,number& nbsp;,& nbsp;,ll& nbsp;,kk); 24& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; & nbsp;& nbsp;& nbsp;& nbsp;& nbsp; k / = 10;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& amp; ; nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; / * k是截获被乘数时的系数* / 25& nbsp;& nbsp;& nbsp;& nbsp; & nbsp;& nbsp;& nbsp;& nbsp;& nbsp; ll * = 10; 26& nbsp;& nbsp;& nbsp;& nbsp;& amp; amp; amp; ; nbsp;& nbsp;& nbsp;} 27& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;                    & nbsp;& nbsp; if(number == mul){& nbsp;& nbsp;& nbsp;& nbs p;& nbsp;& nbsp;& nbsp;& n ; nbsp; / *判断是否为自留号码,输出* / 28& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;                          & nbsp;& nbsp;& nbsp;& nbsp;& nbsp; printf(“%ld& nbsp;& nbsp;”,& nbsp; number); 29& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp ;& nbsp;& nbsp;} 30& nbsp;& nbsp;} 3132} 3334int& nbsp; main(void)35 {36& nbsp;  & nbsp;& nbsp; print_automorphic_number(1000); 37& nbsp;& nbsp; & nbsp; 0& nbsp; 0& nbsp; 0& nbsp; 0& nbsp; 38}运行结果:魏东山老师嵌入式学习视频推荐业务合作