Python 练习实例3
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:这道题设计到算法问题,设计程序时应考虑到时间复杂度。
x+100=m^2
x+100+168=n^2
m^2-n^2=168 ------①
(m+n)(m-n)=168 ------②
由①式可知这两个完全平方数要么都是偶数要么都是奇数,而由②式可知无论m,n都是偶数还是奇数,m+n和m-n得到的都是偶数,故将168拆成两个偶数表示,有[2,84]、[4,42]、[6,28]、[12,14]。故将这几组数据带入方程中,便可求出解。这道题可能是因为数值较小,故手动都很方便算出解,但是如果数值很大时,就要用到循环去做。
方法一:用二位数组存放着四组数据,然后用循环遍历,求出X。
代码如下:
l=[[2,84],[4,42],[6,28],[12,14]] for i in range(0,len(l)): m=(l[i][1]+l[i][0])/2 n=m-l[i][0] x=n*n-100 print x
方法二:用循环得出1到69中的解。
代码如下:
for i in range(1,85): if 168%i==0: j=168/i; if i>j and (i+j)%2==0 and (i-j)%2==0: m=(i+j)/2 n=(i-j)/2 x=n*n-100 print (x)
方法三:利用循环直接从1到168中找出解,这道题数值较小,执行比较快,但如果数值很大,运行时间会加长。
代码如下:
for m in range(168): for n in range(m): if(m+n)*(m-n)==168: x=n**2-100 print x