设该数为a,显然a的个位只能是0,从而$a^2$的个位和十位都是0。
令$n=a/10$,则$n^2$具有1X2X3X4X5X6X7X8X9的形式,从而其个位只能是3或7。
$\sqrt{19293949596979899}-\sqrt{10203040506070809}$大约是3700万左右,而n的个位数只能取3或7,因此若枚举$\sqrt{10203040506070809}$和$\sqrt{19293949596979899}$之间的n,总枚举量大约是$3700/5$约等于500多万,完全可行。
最终结果是$a=1389019170$。
n=101010103
while n<138902662:
m=str(n*n)
if len(m)==17 and m[::2]=="123456789":
print m+"00",n*10
break
else:
n+=4 if n%10==3 else 6
|