在Python中检查一个数字是否是同构数(AutomorphicNumbers

云课堂学Python 2024-04-03 18:16:39

所谓同构数,是指该数出现在它的平方数的右侧。

例如: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 = 25lenth = len(str(num))sqr_num = num**2n = 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 Truen = 25if is_automorphic(n): print(n, "是一个同构数。")else: print(n, "不是一个同构数。")方法3

「算法:」

使用字符串切片,结合三元运算,使用单行代码检测同构数。

n = 25# n^2 = 625 '625'[-2::] = 25print("YES" if int(str(n**2)[-len(str(n))::]) == n else "No")方法4

「算法:」

使用Endswith() 方法,检测字符串是否以指定值结尾。

num = 25a = str(num)num1 = num ** 2b = str(num1)if b.endswith(a): print(num, "是一个同构数。")else: print(num, "不是一个同构数。")

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。

0 阅读:0

云课堂学Python

简介:感谢大家的关注