python编程300例_经典编程100例——python版(例9例10)
生活随笔
收集整理的這篇文章主要介紹了
python编程300例_经典编程100例——python版(例9例10)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 最近事情比較多,python還在學習之中,更新速度慢了一些。今天就2例。 |
例9:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。如6=1+2+3.編程找出1000之內所有的完數并打印出來。
求解分析:關鍵就是把一個數的因子都找出來。取余為零,再加一個比較條件而已。利用了sum()來快速求和。
*列表真是好東西。
代碼如下:
測試結果:
拓展:如果要求打印出
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
程序要怎么改?
——————————————————————————————————
例10:猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,只剩下一個桃子了。求第一天共摘了多少個?
求解分析:
| 天數 | 1 | 2 | 3 | 4 | |
| 吃掉 | c1=s0/2+1 | c2=s1/2+1 | c3=s2/2+1 | c4=s3/2+1 | |
| 剩下 | s0=n | s1=s0-c1 | s2=s1-c2 | s3=s2-c3 | s4=s3-c4 |
| 天數 | 5 | 6 | 7 | 8 | 9 |
| 吃掉 | c5=s4/2+1 | c6=s5/2+1 | c7=s6/2+1 | c8=s7/2+1 | c9=s8/2+1 |
| 剩下 | s5=s4-c5 | s6=s5-c6 | s7=s6-c7 | s8=s7-c8 | s9=s8-c9=1 |
第九天吃完還剩下1個桃子,所以s9=1。
s8=2*(s9+1)=2*(1+1)=4
……
倒推上去,可以得到s0=2*(s1+1)
代碼如下:
測試結果:
拓展:看了求解分析,可以看出用遞歸算法肯定可以。你可以嘗試寫一下嗎?歡迎交流。
編程能培養學生的思維,我沒懷疑過。
總結
以上是生活随笔為你收集整理的python编程300例_经典编程100例——python版(例9例10)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python获取一个模块的路径_如何获取
- 下一篇: mybatis plus 多表查询_My