自守数的程序怎么编

时间:2025-01-29 22:30:58 单机游戏

自守数的程序可以通过以下步骤编写:

计算数字的位数

通过循环除以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;

}

```

代码解释:

isAutomorphic函数

接受一个整数`num`作为参数。

计算`num`的平方并存储在`square`中。

通过循环计算`num`的位数并存储在`digit_count`中。

计算平方的末尾数字`last_digits`。

比较`last_digits`和`num`,如果相等则返回1(真),否则返回0(假)。

main函数

遍历从1到10000的所有整数。

对每个整数调用`isAutomorphic`函数进行判断。

如果函数返回1,则打印该整数。

这个程序可以有效地找到并打印出指定范围内的所有自守数。你可以根据需要修改范围或进行其他优化。