自守数的程序可以通过以下步骤编写:
计算数字的位数
通过循环除以10并计数,直到数字变为0,得到数字的位数。
计算平方的末尾数字
将数字乘以自身得到平方。
通过取余运算提取平方结果的末尾相应位数。
比较末尾数字与原数字
如果末尾数字等于原数字,则该数字是自守数。
```c
include include // 函数用于判断一个数是否为自守数 int isAutomorphic(int num) { long long square = (long long)num * num; // 计算数字的平方 int digit_count = 0; // 用于计数数字的位数 int temp = num; // 计算数字的位数 while (temp != 0) { digit_count++; temp /= 10; } // 提取平方的末尾数字 int divisor = pow(10, digit_count); int last_digits = square % divisor; // 判断是否为自守数 return (last_digits == num); } int main() { printf("1 到10000 之间的自守数有:\n"); for (int i = 1; i <= 10000; i++) { if (isAutomorphic(i)) { printf("%d ", i); } } printf("\n"); return 0; } ``` 代码解释: 接受一个整数`num`作为参数。 计算`num`的平方并存储在`square`中。 通过循环计算`num`的位数并存储在`digit_count`中。 计算平方的末尾数字`last_digits`。 比较`last_digits`和`num`,如果相等则返回1(真),否则返回0(假)。 遍历从1到10000的所有整数。 对每个整数调用`isAutomorphic`函数进行判断。 如果函数返回1,则打印该整数。 这个程序可以有效地找到并打印出指定范围内的所有自守数。你可以根据需要修改范围或进行其他优化。isAutomorphic函数
main函数