参考链接
java 基础算法50提
只选取了一部分来练手
/**
* 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
* 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
* @param month
* @return
*/
public int RabbirNum(int month){
if(month <= 0){
return 0;
}
if(month == 2 || month ==1){
return 1;
}
return RabbirNum(month-1) + RabbirNum(month-2);
}
/**
* 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
*/
@Test
public void FlowerNum(){
for(int i = 100; i <= 999; i++){
Integer testNum = i;
testNum.toString().charAt(1);
int num0 = Integer.valueOf(String.valueOf(testNum.toString().charAt(0)));
int num1 = Integer.valueOf(String.valueOf(testNum.toString().charAt(1)));
int num2 = Integer.valueOf(String.valueOf(testNum.toString().charAt(2)));
int numdf = (int)(Math.pow(num0, 3) + Math.pow(num1, 3) + Math.pow(num2, 3));
if(numdf == testNum){
System.out.println(testNum);
}
}
}
/**
* 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*/
@Test
public void DecompositionNum(){
int input = 90;
int k = 2;
while(input >= k){
if(input % k == 0){
System.out.println("*" + k);
input = input/k;
}
else {
k++;
}
}
}
/**
* 输入两个正整数m和n,求其最大公约数和最小公倍数。
* 辗转相除法
*/
@Test
public void Test6(){
int a = 99;
int b = 66;
int origna = a