在 Python 中检查一个数字是否是同构数(Automorphic Numbers)¶
所谓同构数,是指该数出现在它的平方数的右侧。
例如:N = 25,N**2 = 25*25 = 625
给定的数字 25 出现在结果的右侧。
因此,25 是一个同构数。
方法1¶
算法:
将待检测数字存储在变量 num。
使用 str() 函数将给定数字转换为字符串,并使用 len() 函数找到给定数字的长度,存储在变量 lenth。
计算给定数字的平方并将其存储在变量 sqr_num。
使用模运算和 pow() 函数获取 sqr_num 的最后 n 位数字,并将其存储在变量 n。
使用 if 条件语句检查 n 是否等于给定的输入数字 num。
如果语句为 True,则输出给定的数字是一个同构数。
如果为 False,则输出给定的数字不是一个同构数。
num = 25
lenth = len(str(num))
sqr_num = num**2
n = sqr_num % pow(10, lenth)
if n == num:
print(num, "是一个同构数。")
else:
print(num, "不是一个同构数。")
方法¶
算法:
自定义函数 is_automorphic(n),参数 n 是待检测数字。
计算 n 的平方,存储在变量 sqr_num。
使用 while 循环,条件是待检测数字 n > 0。
分别对 n 、sqr_num 取余 10,判断取余结果是否相等。
如果不相等,函数返回 False。
分别对 n 、sqr_num 整除 10,去掉最后一位数字。
继续 while 循环。
经过多次整除,待检测数字 n 为 0,while 循环结束。
函数返回 True。
使用 if 语句判断函数返回结果。
如果语句为 True,则输出给定的数字是一个同构数。
如果为 False,则输出给定的数字不是一个同构数。
def is_automorphic(n):
sqr_num = n * n
while n:
square_remainder = sqr_num%10
number_remainder = n%10
if square_remainder != number_remainder:
return False
n //= 10
sqr_num //= 10
return True
n = 25
if is_automorphic(n):
print(n, "是一个同构数。")
else:
print(n, "不是一个同构数。")
方法3¶
算法:
使用字符串切片,结合三元运算,使用单行代码检测同构数。
n = 25
# n^2 = 625 '625'[-2::] = 25
print("YES" if int(str(n**2)[-len(str(n))::]) == n else "No")
方法4¶
算法:
使用Endswith() 方法,检测字符串是否以指定值结尾。
num = 25
a = str(num)
num1 = num ** 2
b = str(num1)
if b.endswith(a):
print(num, "是一个同构数。")
else:
print(num, "不是一个同构数。")
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。