题目:求200000以内的自守数。\n\n要求编写函数selfhold,判断一个数是否是一个自守数,\n\n若是,则返回1,否则返回0。\n\n自守数是指一个数的平方的尾数等于该数自身的自然数。
自己写了一半 没思路了
题目:求200000以内的自守数。\n\n要求编写函数selfhold,判断一个数是否是一个自守数,\n\n若是,则返回1,否则返回0。\n\n自守数是指一个数的平方的尾数等于该数自身的自然数。
把代码贴出来了,注释也写上了,帮助你更好的理解:
#include <stdio.h>
#include <math.h>
/* 判断一个数是否是一个自守数 */
int selfhold(int n) {
int m = n * n; // 计算该数的平方
int d = log10(m) - log10(n) + 1; // 计算该数的平方的尾数长度
int k = pow(10, d); // 计算10的d次方
int t = m % k; // 计算该数的平方的尾数
/* 返回结果 */
return t == n ? 1 : 0;
}
int main() {
int i;
for (i = 1; i <= 200000; i++) {
if (selfhold(i)) {
printf("%d\n", i);
}
}
return 0;
}