python3練習100題——003


今天繼續~答案都會通過python3測試~

原題鏈接:http://www.runoob.com/python/python-exercise-example3.html

題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

我的代碼:

import math
def fun():
    for i in range(-100,10000):    #i的range范圍不夠精確,具有偶然性
        x=math.sqrt(i+100)%1
        y=math.sqrt(i+268)%1
        if x==0 and y==0:
            print(i)

思考:

沒有想那么多,其實這道題要從數學的方面思考得多一點,以確定該數的范圍:

假設有m和n兩個數滿足:

i+100 =n^2

i+268=m^2

首先可以確定i的下限:

i+100=n^2>0, i >-100

然后可以確定i的上限:

由上式可得,m^2-n^2 =168

m與n最少得差一個數:|m|>=|n+1|

(n+1)^2-n^2<=168  得出n<=83.5<84

所以i<84^2-100=6956

這樣,就可以得到i的循環在range(-100,6956)以內了!

 

當然如果從數學的方面多去思考能夠大大減少運算量,比如從m、n的值入手(如原答案)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM