自守数
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();
以上是关于自守数的主要内容,如果未能解决你的问题,请参考以下文章