資訊內容
Python 基礎練習實例3(找數字)
題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
程序分析:【用到了初中的數學知識,平方差公式】
這個數的取值范圍是多少?如果沒有取值范圍,用程序就只能永遠的重復執行計算下去了,因此該題首先是一個數學問題,分析出一個取值范圍。
假設該數為 x
1、則:x + 100 = n2, x + 100 + 168 = m2
2、計算等式:m2 - n2 = (m + n)(m - n) = 168
3、假設: m + n = i,m - n = j,那么i * j =168,168是偶數,可推斷i 和 j 至少一個是偶數
4、再由上一步的算式可得: m = (i + j) / 2, n = (i - j) / 2,因為m、n都是整數,所以i+j與i-j都是偶數,則i 和 j 要么都是偶數,要么都是奇數。
5、從 3 和 4 推導可知道,i 與 j 均是偶數。
6、由于 i * j = 168,i與j同正或者同負,且不等于0, j>=2,則 1 < i < 168 / 2 + 1 或 j<=-2,則 -1 > i > 168 / -2 - 1。
7、接下來將 i 的所有數字循環計算即可。
程序源代碼:實例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for i in range(-85, 85):
if i == 0:
continue
if 168 % i == 0:
j = 168 / i
if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:
print (i)
m = (i + j) / 2
n = (i - j) / 2
x = n * n - 100
print (x)
print ('-----------------------')
運行結果如下:
本站部分內容轉載自網絡,如有侵權請聯系管理員及時刪除。
