python勾股数_勾股数-随心随性无为而为-51CTO博客
問題描述:
所謂勾股數(shù),一般是指能夠構(gòu)成直角三角形3條邊的3個正整數(shù)(a,b,c)。
即a2+b2=c2,a,b,cΣN
求1000以內(nèi)的勾股數(shù)。
我的思路:使用for循環(huán)列出所有的數(shù),連續(xù)判斷是否滿足a2+b2=c2關(guān)系,滿足的就是勾股數(shù),但是要注意,三個數(shù)中任意一個都不可以為0,且重復(fù)的如3,4,5和4,3,5要去除,只留下其中一個;
我的代碼:for?i?in?range(1,1000):
for?j?in?range(i+1,1000):
for?k?in?range(1000):
if?i**2+j**2==k**2:
print?i,j,k
示例代碼:import?math
for?a?in?range(1,?1000):
for?b?in?range(a?+?1,?1000):
c?=?math.sqrt(a?*?a?+?b?*?b)
if?c?>?1000:
break
if?c.is_integer():
print?a,?b,?int(c)
代碼分析:想來想去也就想到了這個寫法,但是很明顯,我的代碼很臃腫,運行速度非常慢,效率也非常低,畢竟基數(shù)大,還用了三個for循環(huán)。
而示例代碼明顯比我的高效,它只循環(huán)了兩次,使用math模塊的sqrt函數(shù)求得a2+b2的平方根值(注意該值的類型為浮點型,不是整型),然后判斷該值是否在1000以內(nèi),并且判斷該值是否為有限的浮點型數(shù),如果是就打印出a,b和整型化的c;
總結(jié):math模塊的函數(shù)說明
2.關(guān)于is_integer的說明:
is_integer就是判斷一個浮點數(shù)是否是有限的,如果是就返回True,否則返回False;
總結(jié)
以上是生活随笔為你收集整理的python勾股数_勾股数-随心随性无为而为-51CTO博客的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Educational Codeforc
- 下一篇: 2017年Android百大框架排行榜