資訊內(nèi)容
Python 基礎(chǔ)練習(xí)實(shí)例3(找數(shù)字)
題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請(qǐng)問該數(shù)是多少?
程序分析:【用到了初中的數(shù)學(xué)知識(shí),平方差公式】
這個(gè)數(shù)的取值范圍是多少?如果沒有取值范圍,用程序就只能永遠(yuǎn)的重復(fù)執(zhí)行計(jì)算下去了,因此該題首先是一個(gè)數(shù)學(xué)問題,分析出一個(gè)取值范圍。
假設(shè)該數(shù)為 x
1、則:x + 100 = n2, x + 100 + 168 = m2
2、計(jì)算等式:m2 - n2 = (m + n)(m - n) = 168
3、假設(shè): m + n = i,m - n = j,那么i * j =168,168是偶數(shù),可推斷i 和 j 至少一個(gè)是偶數(shù)
4、再由上一步的算式可得: m = (i + j) / 2, n = (i - j) / 2,因?yàn)閙、n都是整數(shù),所以i+j與i-j都是偶數(shù),則i 和 j 要么都是偶數(shù),要么都是奇數(shù)。
5、從 3 和 4 推導(dǎo)可知道,i 與 j 均是偶數(shù)。
6、由于 i * j = 168,i與j同正或者同負(fù),且不等于0, j>=2,則 1 < i < 168 / 2 + 1 或 j<=-2,則 -1 > i > 168 / -2 - 1。
7、接下來將 i 的所有數(shù)字循環(huán)計(jì)算即可。
程序源代碼:實(shí)例(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 ('-----------------------')
運(yùn)行結(jié)果如下:
本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。

- 上一篇
Python基礎(chǔ)練習(xí)實(shí)例4(年月日算天數(shù))
題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 程序分析:以2018年3月1日為例,應(yīng)該先把前兩個(gè)月的加起來(按月分,用一個(gè)數(shù)組存儲(chǔ)之前的天數(shù)),然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于2時(shí)需考慮多加一天:
- 下一篇
Python 基礎(chǔ)練習(xí)實(shí)例2(算提成)
題目:企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)(I)低于或等于10萬(wàn)元時(shí),獎(jiǎng)金可提10%;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元時(shí),低于10萬(wàn)元的部分按10%提成,高于10萬(wàn)元的部分,可提成7.5%;