上篇文章求1~100范围内容勾股数元组,运行正常;但是后来把范围调整到1000,程序就运行得超级慢,笔记本差点死机。试着改良一下程序,花了一晚上时间,重写了一版。
这次程序运行快了很多,求1千以内勾股数元组2秒运行完,1万以内用时234秒。
再次优化,发现平方和开平方能开得尽就是勾股数,省略了中间的一个步骤,求1万以内的勾股数元组,用时182秒。
---------------------------------------------------------------------------------------------------------------------------------
思路:
勾股数的公式 a² + b² = c² ,其中a、b、c这3个数都是正整数。假设a < b < c,在c未知的情况下,我可以先在1万内找出a和b,设x = a² + b² = c²,很明显对x开平方的结果是一个正整数,因此第一步要做的,就是把平方和开不尽的情况给过滤掉,这节省了很多计算量。
---------------------------------------------------------------------------------------------------------------------------------
import time
import math
start_time = time.time()
tri_list = [] #勾股数列表
final