最近,我参加了一场包含编程作业的面试。其中一个作业是:
编写一个函数,找到所有的整数值对
从
对于每个
这个解决方案给出了正确的答案,但是对于大的
在作业中还提供了提示:
只是出于好奇(现在作业已经结束),有什么办法可以以最优的方式解决这个问题吗?
编写一个函数,找到所有的整数值对
x
,y
,使得给定的整数n
解决方程:x^2 - 4y^2 = n
我的方法是:
我为y
重写了这个方程:y = sqrt(x^2 - n) / 2
从
x=sqrt(n)
到x=n
进行循环对于每个
x
,我计算了y
的值,并检查y
是否为整数。这个解决方案给出了正确的答案,但是对于大的
n
,这个算法没有满足性能要求。在作业中还提供了提示:
x^2 - 4y^2 = (x - 2y)(x + 2y)
,但我不知道如何使用这个提示来解决这个问题。只是出于好奇(现在作业已经结束),有什么办法可以以最优的方式解决这个问题吗?