#include <stdio.h>
void fun(unsigned int min, unsigned int max)
{
for (unsigned int i = min; i <= max; i++)
{
unsigned int bit = 1,result = 0,j = 0,_bit = 0;
for (unsigned int _i = i; _i /= 10; bit *= 10); //i=655--->bit=100
for (result = 0,j = 10,bit *= 10, _bit = bit; _bit > 1; j *= 10,_bit /= 10)
result = (result + (i % _bit) * ((i % j) - (i % (j / 10)))) % bit;
if (result == i)
printf("%d\n\r", i);
}
}
int main(void)
{
unsigned int input_min = 0,input_max = 0;
printf("输入区间最小值:\n\r");
int ret = scanf("%d", &input_min);
printf("输入区间最大值:\n\r");
ret = scanf("%d", &input_max);
printf("自守数:\n\r");
fun(input_min, input_max);
return 0;
}
算法原理参考:http://c.biancheng.net/view/503.html