解决一个问题的思路就是所谓算法
a+b+c=1000,a*a+b*b=c*c 求a,b,c
最原始 最暴力的算法是
1 for a in range(0,1001): 2 for b in range(0,1001): 3 for c in range(0,1001): 4 if a+b+c=1000 and a**2+b**2=c**2: 5 print("a,b,c :%d,%d,%d",%(a,b,c))
在实际运行求值的时候,我们会发现上述算法确实能求出结果,但是问题是特别耗时,我的电脑大约需要花费4分钟。
一种优化算法是
for a in range(1,1001): for b in range(1,1001): c=1000-a-b if a**2+b**2=c**2: print("a,b,c :%d,%d,%d",%(a,b,c))
这个算法里面 c就不需要再从0到1000遍历试探了,在我的电脑里面耗时约1秒钟
为什么差距这么大呢,我们将一个基本运算 算作一个操作。在第一组算法里面一共有1000*1000*1000*n个操作,在第二组算法里面一共有1000*1000*m个操作,显然第一个的基本操作要比第二个多接近1000倍。