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