最近开始学习Java,就想快速地将基础部分过一遍,网上找到一些经典编程题,二话不说先开搞。
1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
思路:斐波那契数列,1,1,2,3,5,8,13,21,34,……因为题目中没有要求几个月结束,我默认十二个月后停止计算。
public class RabitProblem {
static int SumOfMonth = 12;
public static void main(String[] args) {
// TODO Auto-generated method stub
int m1 = 1 ;
int m2 = 1 ;
int nextM = 0;
System.out.println("第1个月兔子的对数为:" + m1);
System.out.println("第2个月兔子的对数为:" + m2);
for(int i = 0; i < SumOfMonth - 2; i++ )
{
nextM = m1 + m2;
System.out.println("第" + (i+3) + "个月兔子的对数为:" + nextM);
m1 = m2;
m2 = nextM;
}
}
}
2.题目:判断101-200之间有多少个素数,并输出所有素数。
思路:用一个数i去除2到sqrt(i)范围内的数,判断是不是素数。
public class PrimeNumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
double MaxNumber = 0;
int y =0;
for (double i = 101; i <= 200; i++)
{
int flag = 1;
MaxNumber = Math.sqrt(i);
for(int j = 2; j <= MaxNumber; j++)
{
if((i%j)==0)
{
flag = 0;
break;
}
}
y = (int)i;
if(flag ==1)
System.out.println("素数为:" + y);
}
}
}
3.题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
思路:分解出个,十,百三个位上的数,再求立方和。
public class DaffodilNumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
int ge =0;
int shi = 0;
int bai =0;
for (int i = 100; i<1000; i++)
{
bai = i / 100;
shi = (i / 10) % 10;
ge = i % 10;
if(Math.pow(bai, 3) + Math.pow(shi, 3) + Math.pow(ge, 3) == i)
System.out.println("水仙花数为:" + i);
}
}
}