快速寻找勾股数算法的实现和优化
深夜隔壁寝室的老哥来访,说他用python实现的寻找2000以内勾股数的算法跑了20秒钟。邀请我一起讨论优化思路,完成后记录如下:
朴素探数法寻找勾股数
首先实现那个需要20秒钟的朴素算法,思路非常简单,三重for循环遍历,利用了勾股数的以下性质:
a2 + b2 == c2
python代码实现:
def gcd(m,n):
return m if n == 0 else gcd(n,m%n)
def pytha_naive(max):
results = []
for a in range(1,max+1):
for b in range(a,max+1):
for c in range(b,max+1):
if a*a + b*b == c*c and gcd(a,b) == 1: