天天看点

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的值,重复执行第二步。