今天看到一个C语言编程的题目。题目不难,但“自守数”这个名词我头一次听说。现在把这道题放到这里跟大家分享一下(代码是题目提供的)。 
自守数是指一个数的平方的尾数等于该数自身的自然数。例如: 
252=625 762=5776 93762=87909376 
请求出200000以内的自守数 
- #include<stdio.h>
 
 - void main()
 
 - {
 
 -         long mul,number,k,ll,kk;
 
 -         printf("It exists following automorphic nmbers small than 200000:\n");
 
 -         for(number=0;number<200000;number++)
 
 -         {
 
 -                 for(mul=number,k=1;(mul/=10)>0;k*=10);
 
 -                 /*由number的位数确定截取数字进行乘法时的系数k*/
 
 -                 kk=k*10; /*kk为截取部分积时的系数*/
 
 -                 mul=0; /*积的最后n位*/
 
 -                 ll=10; /*ll为截取乘数相应位时的系数*/
 
 -                 while(k>0)
 
 -                 {
 
 -                         mul=(mul+(number%(k*10))*(number%ll-number%(ll/10)))%kk;
 
 -                         /*(部分积+截取被乘数的后N位*截取乘数的第M位),%kk再截取部分积*/
 
 -                         k/=10; /*k为截取被乘数时的系数*/
 
 -                         ll*=10;
 
 -                 }
 
 -                 if(number==mul) /*判断若为自守数则输出*/
 
 -         printf("%ld ",number);
 
 -         }
 
 - }
 
 
  复制代码 |   
        
 
    
    
    
     
 
 |