程序分析:
假设该数为 x
①则:×+100 =n2.x +100 +168=m2
② 计算等式:m2 -n2=(m+n(m-n)=168
③设置:m+n=i, m-n=i, i*j=168,i和i至少一个是偶数
④可得:m=(i+j)/2,n=1-j)/2,i和j要么都是偶数,要么都是奇数
⑤从3和4推导可知道,i与j均是大于等于 2的偶数
⑥由于i*j=168, j>=2,则1<i<168/2+1
⑦接下来将 i的所有数宇循环计算即可
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("该数分别为:",int(x))