Python-100 练习题 03 完全平方数
本文大約 1600 字,閱讀大約需要 8分鐘
練習題 3 的網址:
http://www.runoob.com/python/python-exercise-example3.html
Example-3 完全平方數
題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
思路
首先我們可以假設這個整數是x,那么根據題目有:
x+100 = m**2 (1) x+100+168 = n**2 (2)m, n都是正整數,接著就是先根據求解一元二次方程組的做法,可以得到
n**2 - n**2 = 168 (3)利用平方差分解上式,有(n-m)(n+m)=168,這個時候,我們再做一個變換:
m + n = i (4) n - m = j (5) i * j = 168 (6)這個變換,其實只是再設置兩個變量i,j,并且根據它們兩者相乘是 168,這是一個偶數,由于兩個數相乘是偶數,有兩種情況,兩者都是偶數,或者一個偶數和一個奇數,然后再求解(4)和(5),有:
n = (i + j) / 2 (7) m = (i - j) / 2 (8)根據(7)式子,i+j必須是偶數,這樣才可以被 2 整除,得到正整數n,這種情況下,結合(4)和(5),可以推導得到i,j都是大于等于 2 的偶數,又根據(6),可以推導到i,j的范圍是:
1 < j < i < 85這里是假設了i > j的情況,因為不存在一個偶數的平方就是168,所以假設i>j。
代碼實現
第一種實現:
def perfect_square():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) / 2n = (i - j) / 2x = n * n - 100print(x)第二種實現是網上大神的解法,參考文章:
- Python練習題 003:完全平方數
- ZH奶酪:編程語言入門經典100例【Python版】
這種實現其實就是在分析過程中,只推導到m,n部分,即(3)式的部分,然后直接根據這個公式和范圍來求解,這個時候m,n的范圍就是(1,169)。
這是一個應用列表推導式的解法:
def perfect_square2():'''列表推導式:return:'''[print(m**2-100, end=',') for m in range(1, 169) for n in range(1, 169) if (n**2 - m**2) == 168]def perfect_square2_loop():'''for 循環形式:return:'''for m in range(1, 169):for n in range(1, 169):if (n ** 2 - m ** 2) == 168:print(m ** 2 - 100, end=',')輸出結果都是:
-99,21,261,1581,源代碼在:
https://github.com/ccc013/CodesNotes/blob/master/Python_100_examples/example3.py
或者點擊原文,也可以查看源代碼。
歡迎關注我的微信公眾號–機器學習與計算機視覺,或者掃描下方的二維碼,大家一起交流,學習和進步!
往期精彩推薦
Python-100 練習系列
- Python-100 | 練習題 01 & 列表推導式
- Python-100 練習題 02
學習筆記
- 機器學習入門系列(1)–機器學習概覽
- [GAN學習系列] 初識GAN
- [GAN學習系列2] GAN的起源
- [GAN學習系列3]采用深度學習和 TensorFlow 實現圖片修復(上)
數學學習筆記
- 程序員的數學筆記1–進制轉換
- 程序員的數學筆記2–余數
- 程序員的數學筆記3–迭代法
Github項目 & 資源教程推薦
- [Github 項目推薦] 一個更好閱讀和查找論文的網站
- [資源分享] TensorFlow 官方中文版教程來了
- 必讀的AI和深度學習博客
- [教程]一份簡單易懂的 TensorFlow 教程
- [資源]推薦一些Python書籍和教程,入門和進階的都有!
總結
以上是生活随笔為你收集整理的Python-100 练习题 03 完全平方数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 收集100条实用的网络知识
- 下一篇: python技巧(2)--碾平列表和列表