追逐太阳的星星 2022-03-28 12:53 采纳率: 100%
浏览 74
已结题

C语言程序设计自守数问题部分代码不理解

img

/*Case 9
自守数
某个数的平方等于该数本身
求0~10000的所以自守数*/
#include <math.h>
int main() {
    int i,a, k, m;
    for ( i = 1; i <= 10000; i++)//在1-10000内依次检验
    {
        a = i;
        a *= a;                  //求出i的平方
        k = log10(i) + 1;        //求出i的位数k
        for ( m = 1; k ; k--)      //看不明白
        {                      
            m *= 10;               //看不明白
        }
        a %= m;                   //通过取余找出尾数
        if (a==i)                 //判断i的平方的尾数是否等于i
        {
            printf("%d\n",i);
        }
    }
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 关注

    自守数 是指一个数的平方的尾数等于该数自身的自然数
    他先用 k = log10(i) + 1;求出位数,m从1到k循环每次m乘10,比如i=1234 那么m=10000
    a此时等于i的平方,1234* 1234=1,522,756 用a对m求余看和i本身是否相等,1,522,756对1000求余就是后四位
    是就是自首数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月28日