天天看點

Java經典習題(1)

1.古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數是多少對?

程式分析:每個月兔子總數是1,1,2,3,5,8,13,21……發現規律,從第三個月開始,每個月的兔子總數是前兩個月的兔子總數的和。(這個數列其實是斐波那契數列)

2. 判斷101-200之間有多少個素數,并輸出所有素數?

程式分析:素數是指隻有1和它本身兩個正因數的自然數,給出一個自然數,我們隻需要從2除到該自然數的平方根,如果都不能整除,說明該自然數為素數。

3.列印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數本身。例如:153就是一個“水仙花數”因為153=1的三次方+5的三次方+3的三次方?

程式分析:我們需要擷取到一個給定三位數的個位數、十位數、百位數,然後進行相等性判斷即可。

4.将一個正整數分解質因數。例如:90=2*3*3*5。

程式分析:首先判斷給定的正整數n是否是合數,如果不是,則列印n是素數,無法分解;如果n是合數,則按一下步驟完成:

(1)如果質數k恰等于n,說明分解質因數過程已經結束,将List中的質因數列印即可;

(2)2<k<n,如果質數k能被n整除,說明k是n的質因數,将k的值加入到List中,然後用n除以k的商作為新的n,重複執行第一步;

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第二步。