所谓自守数(也称守形数),是指其平方数的低位部分恰为该数本身的自然数。 例如:5 2 =25,而25 的低一位是5,因此 5 是自守数,还有76 2 =5776,而5776 的低二位是76,因此 76 是自守数, 注:0 和 1 也算自守数。 从键盘上输入正整数n的值(这里确保n的平方不超过int范围),请编写函数,计算[2,n]区间自守数的个数。 函数接口定义: int IsAutomorphic(int x); 若 x 为自守数,则函数值为 1(真),否则为 0(假)。
时间: 2024-02-28 09:53:39 浏览: 111
自守数问题 V7.0.0.0
可以先编写一个判断自守数的函数 `IsAutomorphic`,然后遍历区间 [2, n] 中的所有数,判断其是否为自守数,再统计自守数的个数即可。下面是一个示例实现:
```c++
#include <iostream>
using namespace std;
// 判断自守数
int IsAutomorphic(int x) {
int square = x * x;
int digit = 1;
while (x / digit != 0) {
digit *= 10;
}
return (square % digit == x);
}
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 2; i <= n; i++) {
if (IsAutomorphic(i)) {
count++;
}
}
cout << count << endl;
return 0;
}
```
在 `IsAutomorphic` 函数中,首先计算 x 的平方,然后算出 x 的位数,最后判断平方数的低位是否与 x 相等。
在主函数中,先读入 n,然后遍历区间 [2, n] 中的所有数,如果该数是自守数,则将计数器 count 加 1。最后输出 count 即可。
阅读全文