数学的世界有很多很漂亮的数字或者数字集合,比如梅森数,哥德巴赫猜想,水仙花数,完全数,自守数。今天我们就一起来探究一下自守数。自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。
#include<stdio.h>
int main() {
int result, i, n, j; // 声明变量result用于存储平方结果,i用于循环计数,n用于存储输入的数量,j用于数组索引
scanf("%d", &n); // 读取用户输入的整数n,表示接下来要输入的数字的数量
int a[n]; // 声明一个大小为n的数组a,用于存储用户输入的数字
// 循环读取用户输入的n个数字,并存入数组a
for(j = 0; j < n; j++){
scanf("%d", &a[j]); // 读取一个整数并存入数组a的当前位置
}
// 遍历数组a中的每个元素
for(j = 0; j < n; j++) {
result = a[j] * a[j]; // 计算数组元素a[j]的平方,并存储在变量result中
int c = a[j]; // 将数组元素a[j]的值赋给变量c,用于后续比较
int b = result; // 将平方结果赋给变量b,用于后续比较
i = 0; // 初始化循环计数器i为0
// 循环比较变量c和b的每一位数字是否相等
while(c > 0) {
if(c % 10 != b % 10) { // 如果c和b的当前位数字不相等,则跳出循环
break;
}
c /= 10; // 将变量c的值除以10,移除当前最低位的数字
b /= 10; // 将变量b的值除以10,移除当前最低位的数字
i++; // 循环计数器i自增
}
// 如果变量c为0,说明原数字a[j]的每一位数字与其平方的每一位数字从右向左对应相等
if(c == 0) {
printf("%d ", a[j]); // 打印满足条件的原数字a[j]
}
}
return 0; // 程序结束,返回0
}