自守数

Posted 258-333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自守数相关的知识,希望对你有一定的参考价值。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

main()

	long i, j;
	for (i = 0; i <= 10000; i++)
	
		for (j = 10;; j *= 10)
			if (i % j == i)break;
		if ((i * i) % j == i) printf("%ld ", i);
	

081.自守数

#include<stdio.h>
void main()

    long mul,number,k,ll,kk,n;
    clrscr();
    puts("============================================================");
    puts("||    This program will find the automorphic numbers.     ||");
    puts("|| The defination of a automorphic number is: the mantissa||");
    puts("||     of a natural number's square equals to itself.     ||");
    puts("||       e.g., 25^2=625, 76^2=5776, 9376^2=87909376.      ||");
    puts("============================================================");
    printf("\\n >> Please input the scale n you want to find : ");
    scanf("%ld",&n);
    printf("\\n >> The automorphic numbers small than %ld are:\\n\\n",n);
    for(number=0;number<n;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);
    
    puts("\\n\\n >> Press any key to quit...");
    getch();

以上是关于自守数的主要内容,如果未能解决你的问题,请参考以下文章

华为机试-自守数

自守数

B1091 N-自守数 (15分)

华为机试题 HJ99自守数

华为机试题 HJ99自守数

PAT 乙级 1091 N-自守数 (15 分)