自整数是其平方根等于数本身的自然数。例如 25^2 = 625 76^2 = 5776 9376^2 = 87909376 找出最高为 200000 的自整数
最编程
2024-03-17 21:05:23
...
看到题目的第一反应就是从0-200000遍历求平方取余数,但是这便存在数据溢出的问题,所以我们不得不放弃简单暴力的方式。
//自守数
#include <stdio.h>
int main()
{
long mul, number, k, ll, kk;
printf("It exists following automorphic numbers smaller than 200000:\n");
for (number = 0; number < 200000; number++)
{
for (mul = number, k = 1; (mul /= 10) > 0; k *= 10)
{
;
}
kk = k * 10;
mul = 0;
ll = 10;
while(k > 0)
{
mul = (mul + (number % (k * 10)) * (number % ll - number % (ll / 10))) % kk;
k /= 10;
ll *=10;
}
if(number == mul)
{
printf("%ld ", number);
}
}
//printf("\n");
putchar('\n');
return 0;
}