数组-自守数的判断


数学的世界有很多很漂亮的数字或者数字集合,比如梅森数,哥德巴赫猜想,水仙花数,完全数,自守数。今天我们就一起来探究一下自守数。自守数是指一个数的平方的尾数等于该数自身的自然数。例如: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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值