JAVA一些基础算法

复习一下JAVA的基础算法

1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
View Code 

public class mainTest {
/**
* 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
* 规律:1.1.2.3.5.8.13
*/
public static void main(String[] args) {
System.out.println(f(3));
}
public static int f(int i){
if(i==1||i==2){
return 1;
}else{
return f(i-1)+f(i-2);
}
}
}

2.题目:判断101-200之间有多少个素数,并输出所有素数。结果为101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199
View Code 

public class mainTest {
/**
* 思路:素数是只能被自身跟1整除的数。循环i从101-200.与比i小的数(又一个循环j,从2到i)求余,
* 如果i%j==0并且i!=j说明i可以被其他数整除,则跳出循环,
* 如果i不可以被j的任何数整除,
* 只有当i==j的时候才可以整除(就是被自身整除)就为素数
*/
public static void main(String[] args) {
for (int i = 101; i < 201; i++) {
int flag = 0;
for (int j = 2; j <= i; j++) {
if (i % j == 0 && i != j) {
break;
} else if (i == j) {
flag = 1;
}
}
if (flag == 1) {
System.out.print(i+",");
}
}
}
}

3题目:打印出1000以内所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。结果:153,370,371,407、
View Code 

public class mainTest {
/**
* 主要分别取得个位数就好了。
* @param args
*/
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
math(i);
}
}
public static void math(int i){
int i3=i%10;//个位数
int i2=(i%100)/10;//十位数
int i1=i/100;//百位数
if(i==(i1*i1*i1)+(i2*i2*i2)+(i3*i3*i3)){
System.out.println(i);
}


}
}

4.题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
View Code 

public class mainTest {
/**
* 学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表
*/
public static void main(String[] args) {
test(90);
}
public static void test(int i){
String s ="";
s=(i<60)?"C":(i>=90?"A":"B");
System.out.println(s);

}

}

5.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高
View Code 

public class mainTest {
/**
* 一球从100米高度自由落下,每次落地后反跳回原高度的一半;
* 再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
*/
public static void main(String[] args) {
double s =0;
double h =100;

for (int i = 1; i < 11; i++) {
s+=h;
System.out.println(s);
h=h/2;
System.out.println(h);
}
System.out.println(s);
}

}

6.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
View Code 

public class mainTest {
/**
*题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
*
*/
public static void main(String[] args) {
int t=0;
for (int i = 1; i < 5; i++) {
int s1=i;
for (int j = 1; j < 5; j++) {
int s2=j;
for (int k = 1; k < 5; k++) {
int s3=k;
String s= String.valueOf(s1)+String.valueOf(s2)+String.valueOf(s3);
if(s1!=s2&&s1!=s3&&s2!=s3){
t++;
System.out.println(s);
}
}
}

}
System.out.println(t);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值