说明
同构数是会出现在它的平方的右边的数。例如,5就是1个同构数。5的平方是25,25最右边的这个数是5自己。25也是一个同构数,比如25的平方是625,而625右边的数是25.
请编程输出1000以内正整数中所有的同构数。每行一个答案。
输出样例
很明显的,1000以内正整数中的同构数不止这两个。
题解
def is_automorphic(num):
# 计算平方
square = num ** 2
# 将数字转换为字符串,截取平方的最后几位,检查是否等于自身
return str(square).endswith(str(num))
# 遍历1到1000之间的所有数,判断是否为同构数
for i in range(1, 1001):
if is_automorphic(i):
print(i)
解题思路:
- 遍历范围: 我们需要遍历1到1000之间的所有正整数。
- 判断条件: 对于每个数
n
,计算它的平方n^2
,然后检查平方的最后几位是否等于n
本身。要做到这一点,可以通过将n^2
转换为字符串并截取最后与n
位数相同的位数,判断它们是否相等。 - 输出结果: 满足条件的数即为同构数,每行输出一个结果。
解释:
is_automorphic(num)
:该函数判断一个数是否为同构数。通过将数num
的平方转换为字符串,并检查平方数的最后几位是否等于num
本身。- 主程序中,循环遍历1到1000的每个数字,调用
is_automorphic(i)
来判断每个数是否为同构数,如果是,则输出该数。