Python解決小學奧數題斐波拉契數列的個位數問題

2021-10-20 10:33:52 字數 964 閱讀 7579

這樣的數列,第1個是1,第2個是1,第3個是2,後面的每乙個數,都是它前面兩個數之和。求:到第1997個數時,這些數中能被5整除的共有多少個?

要解決這個問題,用python直接計算並計數,可以是這樣的:

i=

3mycount=

0num1=

1num2=

1num3=num1+num2

while i<

1998

:#定義數的範圍

num1=num2

num2=num3

num3=num1+num2

i+=1if num3%5==

0:#判斷是否為5的倍數

mycount+=

1print

(mycount)

這樣做,也能算出結果,但計算量較大,這個數列到1997位時,已經是近400位的數。

從數學上要判斷乙個數是5的倍數,只需要判斷它的個位數是否為0或5,於是有了下面的修正後的**:

i=

3mycount=

0num1=

1num2=

1num3=num1+num2

while i<

1998

: num1=num2

num2=num3

if num1>10:

num1=num1%

10if num2>10:

num2=num2%

10 num3=num1+num2

if num3>10:

num3=num3%

10 i+=

1if num3%5==

0:mycount+=

1print

(mycount)

執行**,計算出結果為399。

也就是說:在斐波拉契數列裡,第1997個數前面,能被5整除的數一共有399個。

小學奧數思維訓練題(二)

同學和老師共16人去郊遊,有男同學 女同學 男老師 女老師。出發前,清點了一下人數,發現 學生比老師人數多 男老師比男同學人數多 男同學比女同學多 女同學比女老師多 問 女同學有多少人?分析 從題中可以得到以下資訊 男同學 女同學 男老師 女老師 老師人數 16 2 8 男老師 男同學 女同學 女老...

小學奧數思維訓練題(三)

甲 乙兩人分別從相距 300 公尺的 a b 兩地同時出發,相向而行,已知甲的速度為乙的 2 倍。那麼,甲 乙第一次相遇的地點距離 ab 中點 公尺。分析 相遇問題中比較基礎的典型問題。兩人同時出發,意味著 到相遇的時候,兩人行進的時間是相同的 而甲的速度是乙的 2 倍,意味著 甲行進的距離是乙的 ...

小學奧數思維訓練題(四)

有乙個雇主約定每年給工人 60 元錢和一件衣服,工人做到 7 個月的時候想要離開,雇主給了他 25 元錢和一件衣服。這件衣服值多少錢?分析 方法一 分數思路 一年 12 個月,要給 60 元錢和 一件衣服,就是說 每個月要給 錢 60 12 5 元 衣服 1 12 1 12 件 就是把衣服裁成 12...