设计算法编写程序,判断两位整数 m 是否为守形数。守形数是指该数本身等于自身平方的低位数。例如,25是守形数,因为252=625,而625的低两位是25。(用函数实现)
时间: 2023-05-30 08:03:24 浏览: 201
算法思路:
1.计算m的平方n;
2.取n的低位数,即取n%10的值;
3.判断取得的值是否等于m%10,若相等,则将m和n分别除以10,继续执行步骤2和3,直到m=0停止;
4.若取得的值不等于m%10,则m不是守形数。
实现代码如下:
```python
def is_shouxing(m):
n = m ** 2
while m > 0:
if n % 10 != m % 10:
return False
m //= 10
n //= 10
return True
```
测试:
```python
print(is_shouxing(5)) # True
print(is_shouxing(25)) # True
print(is_shouxing(7)) # False
print(is_shouxing(11)) # False
```
相关问题
所谓自守数(也称守形数),是指其平方数的低位部分恰为该数本身的自然数。例如:25 2 =625, 因此 25 是自守数。其中:0 和 1 也是自守数。 请编写函数,判断自守数。(用C语言)
```c
#include <stdio.h>
int isAutomorphic(int n) {
int square = n * n;
while (n > 0) {
if (n % 10 != square % 10) {
return 0;
}
n /= 10;
square /= 10;
}
return 1;
}
int main() {
int n;
printf("请输入一个自然数:");
scanf("%d", &n);
if (isAutomorphic(n)) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
--相关问题--:
1. 什么是自守数?
2. 除了0和1,还有哪些自然数是
所谓自守数(也称守形数),是指其平方数的低位部分恰为该数本身的自然数。例如:25 2 =625,因此25是自守数。(注:0 和 1 也算自守数。) 请编写程序,输出指定范围内的所有自守数。若指定范围内不存在自守数,则输出none。
以下是Python代码实现:
start = int(input("请输入起始数:"))
end = int(input("请输入结束数:"))
flag = False # 标记是否存在自守数
for i in range(start, end+1):
square = i ** 2
str_i = str(i)
str_square = str(square)
if str_square.endswith(str_i):
print(i)
flag = True
if not flag:
print("none")
程序首先要求用户输入起始数和结束数,然后使用一个for循环遍历指定范围内的所有数。对于每个数i,计算它的平方数square,并将i和square转换成字符串类型。如果square的末尾与i相等,说明i是自守数,输出i并将标记flag设为True。如果循环结束后flag仍为False,说明指定范围内不存在自守数,输出none。