$x^2+y^2=19451945$ [Python] 纯文本查看 复制代码for i in range(4410): m = (19451945-i*i)**0.5 if m == int(m): print(i,int(m)) 下面的最简代码,只需一行: [Python] 纯文本查看 复制代码print([x for x in range(4410) if (19451945-x*x)**0.5-int((19451945-x*x)**0.5)== 0]) 看看谁还能精简这个代码 代码, 方程
sin2019 发表于 2025-5-27 17:45 他其实是想把19451945转换成根号的形式,然后这个就转换成圆的方程x平方+y平方=圆面积,但是4410其实不是 ... 取到4410的话,答案是重复的 [Bash shell] 纯文本查看 复制代码>>> for i in range(4410): ... m = (19451945-i*i)**0.5 ... if m == int(m): ... print(i,int(m)) ... 256 4403 344 4397 581 4372 1252 4229 2363 3724 2437 3676 2632 3539 3088 3149 3149 3088 3539 2632 3676 2437 3724 2363 4229 1252 4372 581 4397 344 4403 256 ,取3119答案是唯一的 [Bash shell] 纯文本查看 复制代码>>> for i in range(3119): ... m = (19451945-i*i)**0.5 ... if m == int(m): ... print(i,int(m)) ... 256 4403 344 4397 581 4372 1252 4229 2363 3724 2437 3676 2632 3539 3088 3149 >>> 所以我问为啥取4410
4410怎么来的,好奇 [Bash shell] 纯文本查看 复制代码>>> import math >>> >>> r = 19451945 >>> max_x = math.isqrt(r // 2) # 假设x=y,2x^2=r >>> print(max_x) 3118 >>> >>> for x in range(max_x+1): ... y = (r - x**2)**0.5 ... if y == int(y): ... print(x, int(y)) ... 256 4403 344 4397 581 4372 1252 4229 2363 3724 2437 3676 2632 3539 3088 3149 >>>
JackieZQ 发表于 2025-5-27 15:19 试试这个 print([x for x in range(4410) if ((19451945 - x*x)**0.5).is_integer()]) good job!